使用union名称访问union成员
如何访问结构中存在的union成员?
考虑代码段:
struct Emp { char name[20]; union address { char addr[50]; }; }; struct Emp e;
使用e
,如何在不创建任何联合对象的情况下访问addr
类型?
结构/联合中未命名的结构/联合字段在C11和GCC扩展中受支持。 如果启用此function,则可以直接使用e.addr
。 请注意,标记名称也应为空。
struct Emp { char name[20]; union { char addr[50]; }; };
如果不支持,则需要为union
提供名称并使用euaddr
。
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;
应首先命名联盟,然后访问为
[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