C++ 访问联合结构中的变量
C++ accessing a variable in a union struct
我正在使用一个结构定义如下的库:
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;
但这不起作用:
char *d = myStruct->a;
我用上面的方法可以得到x但不是a。为什么?
我以前从未使用过联合,我被迫将此结构用作我需要的库的一部分。提前感谢您的帮助,抱歉,如果我正在讨论这个问题。
字段 x
是 mainStruct
的直接成员,因此这很自然:
int d = myStruct->x;
字段 a
是 middleStruct
的成员,后者是 u
的变体,u
是 mainStruct
的成员。它比 x
嵌套更深,因此您需要像这样导航数据结构:
char *d = myStruct->u.middleStruct.a;
I can get x fine using the above method but not a. why?
因为 x
是 mainStruct
的成员,但 a
不是。
a
是 middleStruct
的成员,middleStruct
是 u
的成员,u
是 mainStruct
的成员。您可以使用与访问非联合 class 实例的成员相同的语法来访问联合实例的成员。所以,你可以写 myStruct->u.middleStruct.a
P.S。 mainStruct->u
的行为未定义,除非您首先初始化 mainStruct
.
我正在使用一个结构定义如下的库:
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;
但这不起作用:
char *d = myStruct->a;
我用上面的方法可以得到x但不是a。为什么?
我以前从未使用过联合,我被迫将此结构用作我需要的库的一部分。提前感谢您的帮助,抱歉,如果我正在讨论这个问题。
字段 x
是 mainStruct
的直接成员,因此这很自然:
int d = myStruct->x;
字段 a
是 middleStruct
的成员,后者是 u
的变体,u
是 mainStruct
的成员。它比 x
嵌套更深,因此您需要像这样导航数据结构:
char *d = myStruct->u.middleStruct.a;
I can get x fine using the above method but not a. why?
因为 x
是 mainStruct
的成员,但 a
不是。
a
是 middleStruct
的成员,middleStruct
是 u
的成员,u
是 mainStruct
的成员。您可以使用与访问非联合 class 实例的成员相同的语法来访问联合实例的成员。所以,你可以写 myStruct->u.middleStruct.a
P.S。 mainStruct->u
的行为未定义,除非您首先初始化 mainStruct
.