#include<stdio.h>
struct a{
char x[6];
int y;
char z[6];
};
struct b{
int y;
char x[6];
char z[6];
};
union c{
char x[6];
int y;
char z[6];
};
int main()
{
printf("%d,%d,%d\n",sizeof(struct a),sizeof(struct b),sizeof(union c));
return 0;
}
运行结果:20,16,8
结构体中各元素独立占有内存空间,总空间为个元素所占空间之和。虽然 a 和 b 的元素相同,但是顺序不同,按照4字节对齐后所占的内存空间不同。
联合体中各元素共享一段内存空间,同一时间只有一个元素可以被使用。总空间为最大元素所占的空间(答案中的8是因为考虑了4字节对齐)。