联合体/共同体 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;

也就是说共同体所有的成员共享内存,当其中一个成员被赋值,另一个成员相应的值也跟着改变。

原文地址:https://www.cnblogs.com/qmlm8844/p/2772288.html