#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字节对齐)。
时间: 2024-10-19 18:30:43