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