union,中文名「聯合體、共用體」,在某種程度上類似結構體struct的一種資料結構,共用體(union)和結構體(struct)同樣可以包含很多種資料型別和變數。
不過區別也挺明顯:
結構體(struct)中所有變數是「共存」的——優點是「有容乃大」,全面;缺點是struct記憶體空間的分配是粗放的,不管用不用,全分配。
而聯合體(union)中是各變數是「互斥」的——缺點就是不夠「包容」;但優點是記憶體使用更為精細靈活,也節省了記憶體空間。
union例子:
//example
#include
union var;
main()
結果:
v.l is 5
now v.l is 6! the address is 0xbfad1e2c
now v.i is 6! the address is 0xbfad1e2c
聯合體union公用乙個記憶體首位址,並且各種變數名都可以同時使用,操作也是共同生效。
參考:
union聯合體學習
union,中文名 聯合體 共用體 在某種程度上類似結構體struct的一種資料結構,共用體 union 和結構體 struct 同樣可以包含很多種資料型別和變數。不過區別也挺明顯 結構體 struct 中所有變數是 共存 的 優點是 有容乃大 全面 缺點是struct記憶體空間的分配是粗放的,不管...
聯合體union筆記
當多個資料需要共享記憶體或者多個資料每次只取其一時,可以利用聯合體 union 1 聯合體是乙個結構 2 它的所有成員相對於基位址的偏移量都為0 3 此結構空間要大到足夠容納最 寬 的成員 4 其對齊方式要適合其中所有的成員 下面解釋這四條描述 由於聯合體中的所有成員是共享一段記憶體的,因此每個成員...
c 學習之聯合體union
特點 共享記憶體,長度由最大位元組型別決定 例如 union data data在64位作業系統下就是8位元組,由最長double決定 data user std cout sizeof data std endl 結果為8是顯然的 然後看一下各個成員的記憶體 std cout user.ihp s...