结构体求所占内存空间,
struct S
{
char c1; //1
int i; //4
char c2; //1
};
int main()
{
struct S s;
printf("%d\n", sizeof(s));
return 0;
}
结构体求内存所占空间,首位0开始算,无论是何种类型均从首位开始往后放,从第二个结构体变量开始存放规则为该变量类型所占空间数的倍数空间为该变量的起始存放点,例如int占4字节,起始存放点应存放在内存空间4的倍数处(4,8,12)及往后存
所占空间=所有结构体成员所占空间数,再以结构体成员最大类型来和默认对齐数8作比较,取较小值后用较小值和结构体成员所占空间作比较,例如4<9, 大于9并且最接近4的倍数的数就是所求的占用空间
//第一个运算从0开始
//默认对齐数为8,取较小值,此处最大类型为int 4<8取4,因此此题所占空间范围是(0-8) 算出所占空间=9,不是最大变量类型int的倍数,需要补3个空间得出12