一、共用體介紹
共用體,結構和結構體類似,在記憶體上面共享乙個記憶體,記憶體大小為最大的成員記憶體
例如:
union data
data;
3個成員,最大的成員為str陣列,20位元組,那麼共用體占用記憶體為20位元組,i對應位byte0-
3,f對應byte0-
3,str對應byte0-
19
二、定義
union
[union tag]
[one or more union variables]
;1、方式1
union data
data;
2、方式2
union data
;union data data;
3、方式3
typedef
union
data_def;
data_def data;
三、訪問
data.i =10;
printf
("%d"
,data.i)
;
四、例項
需求:can匯流排通訊,一幀最大收發資料8個位元組,每幀都要幀id,收到資料存入id,buff[8]
現在需要
1、快取不同幀對應的資料
2、解析幀資料,幀資料協議如下
id 0 byte0 value1 byte1-2 value2 byte3 value3 byte4-7 value4
id 1 byte0-3 value5 byte4-7 value6
常規操作
char id0buff[8]
,id1buff[8]
;char value1,value3,
short value2;
int value4,value5,value6;
if(id ==0)
if(id ==1)
結構體+指標操作
typedef
struct
id0_def;
typedef
struct
id1_def;
id0_def id0data,
*p_id0;
id1_def id1data,
*p_id1;
if(id ==0)
if(id ==1)
共用體+結構體操作
typedef
struct
id0_def;
typedef
union
id0_buff_def;
typedef
struct
id1_def;
typedef
union
id1_buff_def;
id0_buff_def id0buff;
id1_buff_def id1buff;
if(id ==0)
if(id ==1)
C語言 共用體
共用體 typedef union strudent void fun union 列印 sizeof studend 2,data 0 0xfe,data 1 0xff,列印出0xff,暫時沒有理解 已理解 應該列印出0才對啊!如果jack.number 2 那麼列印 sizeof studend...
C語言 共用體
共用體 union define crt secure no warnings include include include union 共用體,構造資料型別,也叫聯合體,用途 十幾個不同型別的變數共佔一段記憶體 相互覆蓋 共用體在型別定義的時候並不分配記憶體,定義共用體變數的時候才分配記憶體 u...
C語言共用體
小甲魚共用體 1 用typedef定義型別 用typedef宣告新的型別名來代替已有的型別名 宣告integer為整型 typedef int integer 宣告結構型別 typedef struct date 宣告num為整型陣列型別 typedef int num 100 宣告string為字...