c - 使用 union 的名称访问 union 成员

标签 c struct unions

如何访问存在于结构中的 union 成员?

考虑代码片段:

struct Emp {

  char name[20];
   union address {

     char addr[50];
   };

};

struct Emp e;

使用 e,如何在不创建任何 union 对象的情况下访问 addr 类型?

最佳答案

Unnamed struct/union fields within structs/unions在 C11 和 GCC 扩展中受支持。如果此功能开启,您可以直接使用e.addr。请注意,标签名称也应为空。

struct Emp {
    char name[20];
    union {
        char addr[50];
    };
};

如果不支持,需要给union一个名字,使用e.u.addr

struct Emp {
    char name[20];
    union address {
        char addr[50];
    } u;
};

关于c - 使用 union 的名称访问 union 成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22189988/

相关文章:

C — 十六进制字符串到文字十六进制值

c - C 动态结构数组中的动态结构数组

c++ - 为什么具有不同访问控制的成员的 union 不是标准布局?

c - 返回一个数组,同时告诉他这个数组的长度?

C 最低标准要求

struct - golang 从结构中返回第一个字段

C++ union 用法

c - 在标记的联盟上 dispatch

c - 返回 3 维数组

c - 段错误(核心转储)但不知道如何修复