c語言共用體的內存分佈

#include<iostream>
using namespace std;

union
{
	unsigned char a;
	unsigned int i;
}u;

int main()
{
	u.i = 0xf0f1f2f3;
	cout<<hex<<u.i<<endl;
	cout<<hex<<int(u.a)<<endl;
	return 0;
}


 

程序的輸出結果爲:

f0f1f2f3

f3

定義了共用體變量後,系統爲共用體變量開闢一定的存儲空間。由於共用體變量先後存放不同的類型的成員,系統開闢的共用體變量的存儲單元的字節數即爲最長的成員需要的字節數。

例如源碼中,定義了u.i,和u.a,系統只開闢了一個int類型所佔的空間,內存中數據低位存入低字節,高位字節存入高地址,而數據的地址採用它的低地址來表示。

u.i    f

        0

        f

       1

        f

       2

u.a  f

       3

 

 

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