- 联合的第一种用法:联合一般作为大型结构的一部分存在。
struct creature{
char has_backbone;
char has_fur;
short num_of_legs_in_excess_of_4;
};
但是,我们知道,所有的动物要么是无脊椎动物,要么是脊椎动物。而且只有脊椎动物才能有皮毛,只有无脊椎动物才可能有多于4条腿。没有一种动物既有皮毛又超过4条腿。这样,可以通过把两个相互排斥的字段存储于一个联合中来节省空间:
union secondary_characteristics{
char has_fur;
short num_of_legs_in_excess_of_4;
}
struct creature{
char has_backbone;
union secondary_characteristics form;
};
- 联合的第二种用法:联合可以把同一个数据解释成两种不同的东西,而不是把两个不同的数据解释为同一种东西。例如:
union bits32_tag{
int whole; //一个32位的值
struct { char c0, c1, c2, c3; } byte; //4个8位的字节
} value;
这个联合允许程序员提取整个32位值(作为int),也可以提取单独的字节字段如value.byte.c0等。