结构体内的变量对齐原则
struct{
int a;
short b;
char c;
}s1;
每个int类型只会从内存地址除以4余数为0的地方开始,只会从这个地方开始
而short只会从内存地址除以2余数为0的地方开始 只会从这个地方开始
c则从任何地方呢都会开始 只会从这个地方开始
(按照4对齐)
struct a {
char c;
}
struct b{
char c;
struct a a;
short s;
struct a a;
}
第一个是4
第二个是6
此时应该是按照2对齐
struct c{
12 char a[3];
13 };
14 struct d{
15 char c[3];(大小为6)
16 struct c a[2];
17 short s;
18 };
只能解释为1字节对齐吧
结果为12