如何解决关于C中递归数据结构的问题
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;
这是一个有效的赋值,指向指针的指针,所以逻辑上下一步是->
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。