什么是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。
从高位开始。