The structure is declared as
struct s {
char str[a];
int ii;
short int sv[b];
double d;
};
这个结构的sizeof运算符的值为多少,求详解
char str[a] 占用a个字节
int ii;在32位机器上占用2个字节,在64位机器上占用4个字节
short int sv[b];占用2*b个字节
double d;占用8个字节
但是,以64位机器为例,sizeof(s)的大小不一定等于a + 4 + 2*b + 8 ,因为系统在计算时,会进行内存对齐。
str占用1*a个字节,基数是1,
ii占用4个字节,基数是4,那么此时str的占用的内存大小必须是4的倍数,以便与ii对齐。
sv[b]占用2*b个字节,基数是2,总字节数(2*b)必须是4的倍数。
d占用8个字节,基数是8,这就要求整个结构体的大小必须是8的倍数。