联合体/共同体 union
定义一个共同体跟定义struct的方式差不多
首先定义一个结构体:
typedef struct
{
unsigned char floor;
unsigned char room;
unsigned short region;
}position;
再定义一个共同体
typedef union
{
position lightpos;
unsigned char posbyte[4];
}p;
如果如下赋值:
p.lightpos.floor = 0x10;
p.lightpos.room = 0x01;
p.lightpos.region = 0x0501;
则:
p.posbyte[0] = 0x10;
p.posbyte[1] = 0x01;
p.posbyte[2] = 0x01;
p.posbyte[3] = 0x05;
也就是说共同体所有的成员共享内存,当其中一个成员被赋值,另一个成员相应的值也跟着改变。