使用c語言時,常常使用struct,對於union型別卻幾乎沒有用過,只知道它是聯合型別,各欄位共享一塊記憶體,實際應用中卻不知道它的具體用途。
今天讀《程式設計卓越之道》中看到有對其使用的簡單介紹,記錄在此:
首先摘錄一下struct和union的重要區別:
struct為每個欄位在不同的偏移處分配儲存空間,而聯合則將所有的字段重疊在記憶體中的相同偏移處。
聯合型別的用途:
1、建立別名。別名是記憶體物件原名之外的其他名字。比如在程式中經常會用到將乙個資料型別強制轉換為另乙個型別,這個操作可以使用聯合來代替。
比如typedef unioncharofunion v;
可以通過v.u來操作乙個uint32型別的物件,當需要將uint32變數的低端位元組看做乙個字元的時候,只需要訪問v.c就可以了。
實際應用中,大多數的協議結構定義中,都會使用union型別來定義。
2、使用聯合來將較大的物件分解成組成這個物件的各個位元組。(尤其在微控制器程式設計中將float拆解成char)
typedef uniondemo;
int main(int argc, char **ar**)
C語言中的 ,
c語言中的 今天在分析乙份原始碼的時候遇到了如下 define uf call x report file line x,x static int report char file,int line,char call,int irc return irc 網上參考 cpp view plain c...
c語言中 作用
和 操作符是和 define巨集使用的.使用 使在 後的首個引數返回為乙個帶引號的字串.例如,命令 define to string s s 將會使編譯器把以下命令 cout to string hello world endl 理解為 cout hello world endl 使用 鏈結 前後的...
C語言中enum,sizeof,typedef分析
事物的難度遠遠低於對事物的恐懼!這節我們來分析下enum,sizeof,typedef三個關鍵字。enum關鍵字 enum是c語言中的一種自定義型別 enum值是可以根據需要自定義的整型值 第乙個定義的enum值預設為0 預設情況下的enum值是在前乙個定義值的基礎上加1 enum型別的變數只能取定...