* struct中的每個域在記憶體中都獨立分配空間
* union只分配最大域的空間,所有域共享這個空間
#include structa;union的使用受系統大小端的影響union b
;int
main()
", c.c); //1為小端,0為大端
剖析:little-endian模式的cpu對運算元的存放方式是從低位元組到高位元組,而big-endian模式對運算元的存放方式是從高位元組到低位元組。
例如,16bit寬的數0x1234在little-endian模式cpu記憶體中的存放方式(假設從位址0x4000開始存放)為:
記憶體位址 0x4000 0x4001
存放內容 0x34 0x12
而在big-endian模式cpu記憶體中的存放方式則為:
記憶體位址 0x4000 0x4001
存放內容 0x12 0x34
32bit寬的數0x12345678在little-endian模式cpu記憶體中的存放方式(假設從位址0x4000開始存放)為:
記憶體位址 0x4000 0x4001 0x4002 0x4003
存放內容 0x78 0x56 0x34 0x12
而在big-endian模式cpu記憶體中的存放方式則為:
記憶體位址 0x4000 0x4001 0x4002 0x4003
存放內容 0x12 0x34 0x56 0x78
Struct 和 Union 的詳細區別
union 共用體 struct 結構體 兩者的區別 1 共用體和結構體都是由多個不同的資料型別成員組成,但在任何同一時刻,共用體只存放乙個被選中的成員,而結構體則存放所有的成員變數。2 對於共用體的不同成員賦值,將會對其他成員重寫,原來成員的值就不存在了,而對於結構體的不同成員賦值是互不影響的 3...
union 和 struct 的區別與聯絡
union 共用體 構造資料型別,也叫聯合體 用途 使幾個不同型別的變數共佔一段記憶體 相互覆蓋 struct 結構體 是一種構造型別 用途 把不同的資料組合成乙個整體 自定義資料型別 主要區別 1.struct和union都是由多個不同的資料型別成員組成,但在任何同一時刻,union中只存放了乙個...
Union和struct的記憶體分配區別
今天看到有一段程式裡在struct裡面用了個union,然後就突然想到了struct和union的區別,找了些資料後發現,struct和union在記憶體分配的時候有區別,union裡的資料是公用一塊記憶體 所以給其分配的記憶體總是union裡面所定義的最大型別長度的整數倍。而struct裡的資料跟...