筆試題 union 共用體 的長度計算

2021-08-15 06:38:54 字數 862 閱讀 8092



共用體是一種特殊形式的變數,使用關鍵字union來定義。

共用體(有些人也叫"聯合")宣告和共用體變數定義與結構體十分相似。其形式為:

union 共用體名 變數名;

共用體表示幾個變數共用乙個記憶體位置,在不同的時間儲存不同的資料型別和不同長度的變數。在union中,所有的共用體成員共用乙個空間,並且同一時間只能儲存其中乙個成員變數的值。

下例表示宣告乙個共用體foo:

1

2

3

4

5

6

unionfoo;

當乙個共用體被宣告時, 編譯程式自動地產生乙個變數, 其

長度為聯合中型別位元組數最多的變數的型別長度的整數倍。以上例而言,最大長度是double資料型別,所以foo的記憶體空間就是double型的長度。 1

2

3

4

5

unionfoo;

在這個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 共用體的使用

所謂的大端模式,是指資料的低位 就是權值較小的後面那幾位 儲存在記憶體的高位址中,而資料的高位,儲存在記憶體的低位址中,這樣的儲存模式有點兒類似於把資料當作字串順序處理 位址由小向大增加,而資料從高位往低位放 所謂的小端模式,是指資料的低位儲存在記憶體的低位址中,而數 據的高位儲存在記憶體的高位址中...