【发布时间】:2014-03-05 06:12:13
【问题描述】:
如何访问结构中存在的联合成员?
考虑一下代码sn-p:
struct Emp {
char name[20];
union address {
char addr[50];
};
};
struct Emp e;
使用e,如何在不创建任何联合对象的情况下访问addr 类型?
【问题讨论】:
如何访问结构中存在的联合成员?
考虑一下代码sn-p:
struct Emp {
char name[20];
union address {
char addr[50];
};
};
struct Emp e;
使用e,如何在不创建任何联合对象的情况下访问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;
};
【讨论】:
给工会成员起个名字:
struct Emp {
char name[20];
union {
char addr[50];
} address;
};
现在你可以像这样访问它了:
struct Emp e;
e.address.addr;
【讨论】:
union 应该先命名,然后访问 as
[struct_object_name].[union_name].[union_datamember]
这里,
struct Emp {
char name[20];
union {
char addr[50];
} Emp_address;
};
struct Emp e;
把它写成
e.Emp_address.addr
【讨论】: