求解答结构,求大佬详解

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的倍数。