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)就行了,不用去纠结什么时候可以不用括号,什么时候要用括号;这是一个好习惯。