結構體,聯合體,內存分配

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章