union聯合體學習

2022-03-30 00:42:04 字數 526 閱讀 3156

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...