如何访问结构中存在的union成员?
考虑代码段:
struct Emp {
char name[20];
union address {
char addr[50];
};
};
struct Emp e;
使用e
,如何在不创建任何联合对象的情况下访问addr
类型?
答案 0 :(得分:3)
Unnamed struct/union fields within structs/unions。如果启用此功能,您可以直接使用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;
};
答案 1 :(得分:1)
给工会成员一个名字:
struct Emp {
char name[20];
union {
char addr[50];
} address;
};
现在您可以像这样访问它:
struct Emp e;
e.address.addr;
答案 2 :(得分:0)
首先应该将Union命名,然后以
进行访问[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