问题描述
typdef struct {
int foo;
baz* bar;
} baz;
baz* myStruct;
如何访问 foo
中 bar
的 myStruct
值?
以“猜测和测试”的方式,我已经尝试过
myStruct->bar.foo;
(*myStruct->bar).foo;
(*(*(myStruct)->bar).foo);
以及其他一些组合,但我总是遇到错误。
显然,我对这个主题的了解是有限的。欢迎任何建议。谢谢!
解决方法
您需要转发声明baz
:
typedef struct baz {
int foo;
struct baz* bar;
} baz;
(注意额外的 baz
)。
然后(使用您修改后的问题)您可以:
myStruct->bar->foo
您是否正在尝试编写 myStruct->bar->foo
? bar
是一个指针,因此您需要使用 ->
取消引用它以获取其内部 foo
。
由于 myStruct
不是指针,因此任何属性访问都使用 .
。
因为 bar
是一个指针,所以你必须使用 ->
。
组合:
myStruct.bar->foo
这完全基于您尝试“导航”的直接类型。
如:
baz* bar = myStruct.bar;
这是一个有效的赋值,指向指针的指针,所以逻辑上下一步是->
。