边界对齐
一个结构体中不同类型数据的顺序与结构体存放占用的字节数有关
结构体所占空间与其内部元素的类型有关,而且与不同类型元素的排列有关。
char==》1
int===》4
long===》4
double===》8


test1----->4+4(1+1+1+对齐1)
test2----->4(1+对齐3)+4+4(1+1+对齐2)
sizeof(X)----->32
sizeof(X)----->24
struct X
{
char a;
int b;
double c;
};
struct Y
{
char a;
X b;
};
sizeof(X)===》16,sizeof(Y)===》24
计算Y的存储长度时,在存放第二个元素b时的初始位置是在double型的长度8的整数倍处,而非16的整数倍处,即系统为b所分配的存储空间是第8~23个字节。
如果将Y的两个元素char型的a和X型的b调换定义顺序,则系统为b分配的存储位置是第0~15个字节,为a分配的是第16个字节,加起来一共17个字节,不是最长基本类型double所占宽度8的整数倍,因此要补齐到8的整数倍,即24。
(个人感觉考察概率不大)