C語言中Union型別的使用方法

2021-08-26 06:49:53 字數 645 閱讀 3616

使用c語言時,常常使用struct,對於union型別卻幾乎沒有用過,只知道它是聯合型別,各欄位共享一塊記憶體,實際應用中卻不知道它的具體用途。

今天讀《程式設計卓越之道》中看到有對其使用的簡單介紹,記錄在此:

首先摘錄一下struct和union的重要區別:

struct為每個欄位在不同的偏移處分配儲存空間,而聯合則將所有的字段重疊在記憶體中的相同偏移處。

聯合型別的用途:

1、建立別名。別名是記憶體物件原名之外的其他名字。比如在程式中經常會用到將乙個資料型別強制轉換為另乙個型別,這個操作可以使用聯合來代替。

比如typedef unioncharofunion v;

可以通過v.u來操作乙個uint32型別的物件,當需要將uint32變數的低端位元組看做乙個字元的時候,只需要訪問v.c就可以了。

實際應用中,大多數的協議結構定義中,都會使用union型別來定義。

2、使用聯合來將較大的物件分解成組成這個物件的各個位元組。

typedef unionasbytes composite;

可以使用composite.bytes陣列來訪問composite.u欄位的各個位元組。

C語言中Union型別的使用方法

使用c語言時,常常使用struct,對於union型別卻幾乎沒有用過,只知道它是聯合型別,各欄位共享一塊記憶體,實際應用中卻不知道它的具體用途。今天讀 程式設計卓越之道 中看到有對其使用的簡單介紹,記錄在此 首先摘錄一下struct和union的重要區別 struct為每個欄位在不同的偏移處分配儲存...

C語言中union的含義

union是一種資料型別,跟struct型別有點類似,其形式為 union 聯合名 聯合變數名 聯合表示幾個變數共用乙個記憶體位置,在不同的時間儲存不同的資料型別和不同的資料長度。當乙個聯合被說明時,編譯程式自動的產生乙個變數,其長度為聯合中最大的變數長度。聯合成員的訪問方法跟結構的一樣。struc...

C語言中的自定義型別 union共用體

共用體union和結構體struct在型別定義 變數定義 使用方法上很相似。舉個栗子 include struct my struct union my union int main int argc,char ar 輸出 0x7ffdeebbfd50 0x7ffdeebbfd54.0x7ffdee...