#include <stdio.h>
#include <stdlib.h>
struct A
{
int a;
double b;
char c;
short d;
};
struct B
{
double b;
int a;
char c;
short d;
};
int main()
{
printf("%d\n",sizeof(A));
printf("%d\n",sizeof(B));
system("PAUSE");
return 0;
}
对齐规则: 类型必须从类型size的整数倍开始,结构体size必须为结构体内类型最大的整数倍。
struct A: int 4 double 8 必须从8开始,故为16,char为17,short必须从2字节整数倍,从18开始,故为20,结构体必须为8的整数倍,所以必须为24。
struct B:double 8,int 4,char 1 对齐到14,从short开始2,一共为16