共用體是一種特殊形式的變數,使用關鍵字union來定義。
共用體(有些人也叫"聯合")宣告和共用體變數定義與結構體十分相似。其形式為:
union 共用體名 變數名;
共用體表示幾個變數共用乙個記憶體位置,在不同的時間儲存不同的資料型別和不同長度的變數。在union中,所有的共用體成員共用乙個空間,並且同一時間只能儲存其中乙個成員變數的值。
下例表示宣告乙個共用體foo:
1
2
3
4
5
6
union
foo;
當乙個共用體被宣告時, 編譯程式自動地產生乙個變數, 其
長度為聯合中型別位元組數最多的變數的型別長度的整數倍。以上例而言,最大長度是double資料型別,所以foo的記憶體空間就是double型的長度。 1
2
3
4
5
union
foo;
在這個union中,foo的記憶體空間的長度為12,是int型的3倍,而並不是陣列的長度10。若把int改為double,則foo的記憶體空間為16,是double型的兩倍。
共用體和結構體有下列區別:
1. 共用體和結構體都是由多個不同的資料型別成員組成, 但在任何同一時刻, 共用體只存放了乙個被選中的成員, 而結構體的所有成員都存在。
2. 對於共用體的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對於結構體的不同成員賦值是互不影響的。
共用體 union 的用法
以前c語言學到union的時候,總是疑惑這傢伙該怎麼用,有什麼存在的價值,後來接觸到的東西多了,發現union這個定義還是有他的用武之地的。在定義union資料結構的時候,利用位差就可以很容易的讀出多位元組資料的高地位,甚至單個位元組的資料。例如 利用共用體型別的特點分別取出short型變數高位元組...
union 共用體的使用
union 共用體名 變數名 共用體表示幾個變數共用乙個記憶體位置,在不同的時間儲存不同的資料型別和不同長度的變數。在union中,所有的共用體成員共用乙個空間,並且同一時間只能儲存其中乙個成員變數的值。正是利用union這個公用同塊位址的特點可以有很多的用途。1.cpu大小端的測試 首先了解下大小...
union 共用體的使用
所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...