C++ C++;访问联合结构中的变量
我正在使用一个定义了如下结构的库:C++ C++;访问联合结构中的变量,c++,struct,member,unions,C++,Struct,Member,Unions,我正在使用一个定义了如下结构的库: typedef struct { int x; union { struct { y; union { int z; } innerStruct; char *a; } middleStruct; int q; } u; } mainStruct; 如何访问char*a
typedef struct {
int x;
union {
struct {
y;
union {
int z;
} innerStruct;
char *a;
} middleStruct;
int q;
} u;
} mainStruct;
如何访问char*a
我尝试过多种方法。这项工作:
mainStruct *myStruct;
int d = myStruct->x;
int d = myStruct->x;
但这不起作用:
char *d = myStruct->a;
我可以用上面的方法得到x,但不能得到a。为什么?
我以前从未与工会合作过,我被迫将此结构用作我需要的库的一部分。提前感谢您的帮助,如果我打断了这个问题,请原谅。字段
x
是mainStruct
的直接成员,因此这很自然:
mainStruct *myStruct;
int d = myStruct->x;
int d = myStruct->x;
字段a
是middleStruct
的成员,它是u
的变体,后者是mainstuct
的成员。它比x
嵌套得更深,因此您需要像这样导航数据结构:
char *d = myStruct->u.middleStruct.a;
字段
x
是mainStruct
的直接成员,因此这很自然:
mainStruct *myStruct;
int d = myStruct->x;
int d = myStruct->x;
字段a
是middleStruct
的成员,它是u
的变体,后者是mainstuct
的成员。它比x
嵌套得更深,因此您需要像这样导航数据结构:
char *d = myStruct->u.middleStruct.a;
我可以用上面的方法得到x,但不能得到a。为什么?
因为x
是mainStruct
的成员,但是a
不是
a
是middleStruct
的成员,middleStruct是u
的成员,后者是mainstuct
的成员。可以使用与访问非联合类实例成员相同的语法访问联合实例的成员。因此,您可以编写myStruct->u.middleStruct.a
注意,mainStruct->u
的行为未定义,除非您首先初始化mainStruct
我可以用上面的方法得到x,但不能得到a。为什么?
因为x
是mainStruct
的成员,但是a
不是
a
是middleStruct
的成员,middleStruct是u
的成员,后者是mainstuct
的成员。可以使用与访问非联合类实例成员相同的语法访问联合实例的成员。因此,您可以编写myStruct->u.middleStruct.a
另外,
mainStruct->u
的行为是未定义的,除非您首先初始化mainStruct
myStruct->u.middlestruct.a
myStruct->u.middlestruct.a