sizeof()是一种内存容量度量函数,计算数据(数组、变量、类型、结构体等)所占空间,用字节数表示。
sizeof在计算变量所占的空间大小时所选取的机制:
1.结构体满足的三个条件
结构体的大小等于结构体内最大成员大小的整数倍;
结构体内的成员相对于首地址的偏移量是当前成员大小的整数倍,如有需要会在成员之间填充字节;
(结构体变量的首地址能被其最大成员大小所整除。)
如:
struct A {char a; int b; };
大小1(char)+3(填充)+4(int)=8,sizeof(A)=8
struct B{char a;
A a1;char b;};
大小是1(char)+3(填充)+8(A)+1(char)+3(填充)=16,所以sizeof(B)=16
2.指针
指针实为地址,取决于字长,32位为4字节,64位为8字节,但也与编译器有关。