#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字节对齐)。