联合 (union) 乍看和结构 (structure) 有点像,但联合内的属性共用同一块内存,故同一时间内仅能用联合内其中一种属性。联合主要用来表示同概念但不同资料类型的实体。
我们可以用 typedef 来简化联合的型别名称:
如果想节省命名空间的符号量,可改用以下方法来宣告:
这时候的联合是匿名联合 (anonymous union),故不占用命名空间。
我们先前提过,联合在同一时间同仅能储存其中一个属性,故以下程式会引发错误:
联合和结构相似,都是一种复合型别,我们可以在结构内嵌入联合,这时候的好处在于我们可以用一个额外的字段来记录目前联合中使用的型别,如以下实例: