一叶知秋zxw
2015-08-10 11:43
每个成员相对于结构体首地址的偏移是当前成员所占内存大小的整数倍,那么c的偏移量就是8;
内存大小=最后一个成员的偏移量(也就是8)+最后一个成员的大小(8)+末尾填充字节数(0)=16;
是这个样子吗?
int的字节数为4,char的字节数为 1,double的字节数为 8;
偏移量=5
最后一个成员的大小是8
填充字节数 =3(填充字节数=最后一个成员的最小整数倍数-偏移量;偏移量必须是最后一个成员的整数倍,不然就得填充字节,比如这里最后一个成员的大小是8,那么8的最小整数倍是8,所以8-3=5)
内存大小=5+8+3=16
4+4+8
char后面要做字节对齐,空三个字节double开始
Linux C语言结构体
118294 学习 · 162 问题
相似问题