C语言中联合体的实际用途

3

可能重复:
C:Union在哪些实际情况中被使用?

我知道联合的概念,但我没有看到在实际编码中应该使用联合数据结构的情况。如果你们能给我一些使用联合正确的示例或教程,我将非常感激。

谢谢您提前。


另一个重复的链接:https://dev59.com/l3RB5IYBdhLWcg3wFz8g - Manoj R
2个回答

3

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

struct {
  int type;

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

2

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接