union的用法

什么是union

union类似于结构体,但是又不完全一样。union也可以叫做共用体,声明方式是这样的:

union{
变量A
变量B
}共用体名称;

之所以叫做共用体是因为union中的所有变量共用一段内存,储存在相同的内存地址中,因此其中的某个变量在被赋值之后,其他的变量也会共用这个值。比如:

union{
float rgb_data;							//float型数据共32位,4个字节
unsigned long color;					//long型数据共32位,4个字节
unsigned char color_data[4];			//数组每一项是1个字节,四项共4个字节
}color_udata;

在这一段程序中,三个变量占用的空间都为4个字节,假如我们给rgb_data赋值为某个4个字节长度的数据。

color_udata.color=0x1234

再去读取另外两个变量的值

r=color_udata.color_data[0];
g=color_udata.color_data[1];
b=color_udata.color_data[2];
f=color_udata.color_data[3];

可以尝试用串口打印出来,读取到的值应该是r=0x1000,g=0x0200,b=0x0030,f=0x0004。
从高位开始。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值