struct sample
{
int a;
char b;
float c;
int *al;
union un
{
int a;
char c;
float f;
}*ptr;
}test;
如何访问结构成员'al'和工会成员a,c,f?
答案 0 :(得分:2)
与其他人没有区别:
访问al
test.al
如果您想要al
的值,可以通过*(test.al)
获取。
访问a
,c
,f
test.ptr->a;
test.ptr->c;
test.ptr->f;
答案 1 :(得分:0)
问题是你需要取消引用指针。
通常我们会这样做来取消引用联盟。
test.*ptr.a.
这个问题是编译器会在解除引用符号之前执行注释,因此编译器将取消引用联合中的字段,而不是它自己的联合。
要解决这个问题,我们可以在括号中加上'* ptr'来强制在访问字段之前引用联合。像这样。
test.(*ptr).a
为了更简单的语法,这也可以写成
test.ptr->a