union和struct的區別 大小端

2022-04-11 04:24:57 字數 1064 閱讀 6035

* struct中的每個域在記憶體中都獨立分配空間

* union只分配最大域的空間,所有域共享這個空間

#include structa;

union b

;int

main()

union的使用受系統大小端的影響

", 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裡的資料跟...