结构体大小遵循一下两条原则:
1) 数据对齐原则---内存按结构体成员的先后顺序排列,当排到该成员时,其前面已开辟的空间字节数必须是该成员类型所占字节数的整数倍,如果不够则补齐,依次向后类推。
2) 整体空间是占用空间最大的成员类型所占字节数的整数倍。
struct c{
int x; //4字节
float y; //4字节
}a[3];
a[3]位数组,sizeof(a)计算数组大小位8*3=24
假如结构体改为下面这样:
struct c{
double x; //8字节
char y; //1字节 总:8+1
int z; //4字节,前面字节和位9字节,不满足第一条所以为(9+3)+4=16
}总数16,满足第二条。
当然是3倍sizeof(int)+ sizeof(float)。