共同体:使几个不同类型的变量共占一段内存(相互覆盖)。所占内存长度是其中最长的成员占用的内存长度。
结构体:把不同类型的数据组合成一个整体。所占内存长度是各成员占用的内存长度的总和。
例:
typedef union
{
unsigned char byte;
struct
{
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
} bits;
} FLAG_BYTE;
给byte赋值会影响到结构体bits的8个位,反之,一样影响。
给byte赋值是全局赋值。
给bits赋值是位赋值。
结构体内的地址或内存是 LSB,上面的是bit0,下面是bit7.
参考: