c语言中关于sizeof()的使用

struct
{int b;
char c[10];
double a;
}st;
sizeof(st)为什么是24,而不是22????

要自然对齐,int b四个字节,char c[10]一个字节x10,一共十四个字节,double 八个字节,
十四不是八的倍数,所以加二变成十六自然对齐,让后再十六加八,就是二十四追问

麻烦可不可以说下什么叫自然对齐???

追答

你可以在百度搜下“struct自然对齐”看看就明白了,我就不在这赘述了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-12
Char

偏移量必须为sizeof(char)即1的倍数

int

偏移量必须为sizeof(int)即4的倍数

float

偏移量必须为sizeof(float)即4的倍数

double

偏移量必须为sizeof(double)即8的倍数

Short

偏移量必须为sizeof(short)即2的倍数。
按说是22,24是答案吗?
相似回答