sizeof 问题

2020-07-21 教育 60阅读
struct name1{ //字节对齐问题
char str; //sizeof(char)为1
short x; //sizeof(short)为2
int num; //sizeof(int)为4
}; //以4字节对齐,前面2个在第一个4字节里面,所以就是4+4了
struct name2{
char str;
int num;
short x;
}; //同样以4字节对齐,这里的char和short分开了,4+4+4了
为什么sizeof(name1)=8;sizeof(name2)=12
问题补充:
类似的
struct s1{
int i:8; //因为int占了4字节,
int i:4; //和上面的一起在了4个字节
int a:3; //4字节
double b; //sizeof(double)为8,以8字节对齐,前面的2个合一起为8,所以8+8
};//16
struct s2{
int i:8;
int i:4; //2个合一起4字节。
double b; //以8字节对齐
int a:3;
};//24 //8+8+8
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com