#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字節對齊)。