想象一下有一个struct
,它保存了一个值和该值的类型。当类型设置为特定类型时,您只需要使用union
的一个成员,而不是同时使用三个成员浪费空间。
struct {
int type;
union {
int intval;
double dval;
char cval;
} value;
}
我经常在哪里使用它:解析一个配置文件时,我将所有的值存储在一个联合数据类型中。例如,当值可以是整型或字符串时,我会使用以下数据结构:
struct cval_s {
short type;
union {
int ival;
char *cval;
} val;
};
在更复杂的问题中,我也会使用它们。例如,我曾经为一种简单的脚本语言编写过解释器,其中该语言中的一个值由包含 union 的结构体表示。