sizeof运算符
1.为什么要使用sizeof运算符?
计算某种数据类型或者变量所占用的字节数,可以采用人工计算的方式,也可以采用sizeof运算符进行计算,更推荐使用sizeof运算符,理由如下:
①内置数据类型在不同的编译环境下所占的字节数并不一定保持不变,若按照固有思想去计算,则很可能出错;例如:
1 std::cout << "int*所占的字节数:" << sizeof(int*) << std::endl;
在32位编译环境下输出是4字节,在64位编译环境下输出是8字节;
②一些自定义数据类型(结构体、联合体等)可能涉及到字节对其问题,例如:
1 struct MyStruct 2 { 3 char c1; 4 int i; 5 }; 6 7 int main() 8 { 9 std::cout << "Mystruct所占的字节数:" << sizeof(MyStruct) << std::endl; 10 }
自定义的结构体类型Mystruct有char类型的成员c1和int类型的成员i,以32位编译环境为例,char类型占1字节,int类型占4字节,然而输出并不是简单的1+4,而是8,这就涉及到结构体成员的字节对其问题;
③一些自定义数据类型除了自己定义的成员外可能还包含隐含成员。
使用sizeof运算符,则不用考虑以上问题;
2.怎么使用sizeof运算符?
sizeof是一个运算符,不是一个函数!虽然长得很像,但有根本区别;
使用的时候统一sizeof(x)就行了,不用去纠结什么时候可以不用括号,什么时候要用括号;这是一个好习惯。