c語言共用體例項使用

2021-10-21 01:44:50 字數 1646 閱讀 8410

一、共用體介紹

共用體,結構和結構體類似,在記憶體上面共享乙個記憶體,記憶體大小為最大的成員記憶體

例如:

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為字...