在使用sizeof运算符时,需要注意其适用范围,并非所有的变量、类型、表达式都能都通过sizeof运算符计算所占用的内存空间。
结构体可以使用sizeof运算。在定义结构体时,使用了位域声明结构体中的成员,在计算空间时,应该遵循位域成员不能横跨两个字节的原则,因此不能把所有的位域成员的空间简单相加,还要考虑位域成员的内存布局。
1虽然能够通过sizeof运算符计算出结构体所占据的内存空间,但是不允许计算结构体中某个位域成员所占用的空间。
2此外不允许通过sizeof运算符计算函数所占的空间。
3但是对函数调用表达式进行sizeof运算是允许的,对函数调用进行sizeof运算的结果是得到函数返回值类型所占的内存空间,并没有真正调用函数。
4但如果函数没有返回值,其函数调用不能使用sizeof运算符,因为sizeof运算符不能计算不明确类型所占的空间。