C中联合的实际用法

时间:2011-06-10 07:39:55

标签: c unions

  

可能重复:
  C: Where is union practically used?

我知道union的概念,但我没有看到真实世界编码的实际情况,我应该使用union数据结构。如果你们能给我一些示例或教程来展示使用union的案例,我将非常感激。

提前致谢。

2 个答案:

答案 0 :(得分:3)

想象一下,struct保持一个值和该值的类型。当类型设置为特定类型时,您只需要使用union的其中一个成员,而不是在同时使用其中三个时浪费空间。

struct {
  int type;

  union {
    int intval;
    double dval;
    char cval;
  } value;
}

答案 1 :(得分:2)

我经常使用它:解析配置文件我将所有值存储在union数据类型中。例如。当值可以是int类型或字符串时,我会使用如下数据结构:

struct cval_s {
  short type;
  union {
    int ival;
    char *cval;
  } val;
};

在更复杂的问题中,我也使用它们。例如。一旦我为一种简单的脚本语言编写了一个解释器,并且该语言的值由包含union的结构表示。