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