|
|
发表于 2014-2-10 11:50:32
|
显示全部楼层
你确定(4+20+1+4+4+30=67)??
其实是4+20+1+4+4+30=63
出于操作系统的内存对齐,所以就变了68
你又要说,那为什么不是64呢
这个你可以把结构体里面的结构逐条注释,然后看编译结果
int num;
4
int num;
char name[20];
4+20=24
int num;
char name[20];
char sex;
4+20+1=25,注意25不是4的倍数,这时候系统就补了3个字节变成28了
int num;
char name[20];
char sex;
int age;
28+4=32
int num;
char name[20];
char sex;
int age;
float score;
32+4=36
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
36+30=66,66不是4的倍数就补了2个字节变68了 |
|