聯合——大小端

聯合(union)

注意:命名開頭大寫!
它與結構的使用語法基本一樣,區別是結構的每個成員都有獨立的存儲空間,而聯合是所有成員共用一塊存儲空間(每個成員都從0地址開始),因此同一時刻只能有一個成員使用,只要有一個成員的值發生變化,其它成員的值也會隨之變化
注意:聯合的特點就是使用少量的內存對應多個標識符,使用它可以節約內存,在現代的編程中很少使用聯合(不再需要極端地節約內存了)

相關重點:

1、計算大小,不需要計算對齊(每個成員都從0開始,天然對齊),但要注意補齊
2、利用聯合判斷系統的大小端
小端:低位地址存儲低位數據(低存低,高存高)
大端:低位地址存儲高位數據(低存高,高存低)

eg.		0x01020304,且有地址0x18存儲4字節
		01|02|03|04  ->  大端
		04|03|02|01  ->  小段

:數據左大右小,地址左低右高

eg.一聯合含char和int,用int存儲數據,用char讀取,因爲char只從0地址(低地址)讀取一位數據,看取得的是高位數據還是低位數據,就可以判斷大小端

		d.num = 0x01020304;
		if(d.ch == 0x01)
		{
			printf("大端");
		}
		else
		{
			printf("小端");
		}
	或	printf("%s",d.ch == 0x01 ? "大端" : "小端");

結果爲小端
:絕大多數的個人計算機都是小端,而服務器、網絡設備都是大端(因此大端也叫:網絡字節序)

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