共用體(聯合體)與結構體的區別

2021-07-23 21:30:38 字數 783 閱讀 7957

聯合體,又稱共用體。程式設計的時候需要使幾種不同型別的變數存放到同一段記憶體單元中,而衍生出來的一種型別。也就是說,聯合體中每次只能存其中的乙個變數,這個變數在聯合體變數中存入新的成員就失效了!!!用法與結構體一致,但是多用於結構體內部。

1 structname

2 10 }mytext;//mytext是結構體的另乙個名字

注意:(1)在struct中,各成員都占有自己的記憶體空間,它們是同時存在的。乙個struct變數的總長度等於所有成員長度之和。在union中,所有成員不能同時占用它的記憶體空間,它們不能同時存在。union變數的長度等於最長的成員的長度。

(2)對於union的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對於struct的不同成員賦值是互不影響的

void

main()

half;

}number;

number.i=0x4241

;

printf(

"%c%cn

", number.half.first, number.half.second);

num ber.half.first='a'

;

number.half.second='b'

;

printf(

"%xn

", number.i);

}輸出結果為:

ab6261

共用體(聯合體)與結構體的區別

聯合體,又稱共用體。程式設計的時候需要使幾種不同型別的變數存放到同一段記憶體單元中,而衍生出來的一種型別。也就是說,聯合體中每次只能存其中的乙個變數,這個變數在聯合體變數中存入新的成員就失效了!用法與結構體一致,但是多用於結構體內部。1 structname 2 10 mytext mytext是結...

C 聯合體(共用體)

所佔的空間大小為成員中所佔空間最大的 union 聯合名 union a 使用該聯合體模板建立兩個變數a,b union a a,b union perdata a,b union a,b typedef int length length為int 型別的別名 length a,b a,b為int ...

結構體與聯合體的區別

每個成員變數都單獨佔一塊記憶體,各成員在記憶體中的分布存在 記憶體對齊 64位機器按8個位元組對齊 includeint main s s.a a s.b 1 s.c 2 s.d null s.e 3 s.f s.a printf size of struct s is d n sizeof s r...