我正在使用一个库,它的结构定义如下:
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。为什么?
我以前从来没有使用过联合,我被迫使用这个结构作为我所需要的库的一部分。提前感谢你的帮助,如果我没有回答这个问题,我深表歉意。
发布于 2018-12-11 08:38:16
字段x
是mainStruct
的直接成员,所以这样做是很自然的:
int d = myStruct->x;
字段a
是middleStruct
的成员,它是u
的变体,是mainStruct
的成员。它比x
嵌套得更深,所以您需要像这样导航数据结构:
char *d = myStruct->u.middleStruct.a;
https://stackoverflow.com/questions/53715757
复制相似问题