微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

关于C中递归数据结构的问题

如何解决关于C中递归数据结构的问题

如果我有一个递归结构

typdef struct {
    int foo;
    baz* bar;
} baz;

baz* myStruct;

如何访问 foobarmyStruct 值?

以“猜测和测试”的方式,我已经尝试过

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->foobar 是一个指针,因此您需要使用 -> 取消引用它以获取其内部 foo

,

由于 myStruct 不是指针,因此任何属性访问都使用 .

因为 bar 是一个指针,所以你必须使用 ->

组合:

myStruct.bar->foo

这完全基于您尝试“导航”的直接类型。

如:

baz* bar = myStruct.bar;

这是一个有效的赋值,指向指针的指针,所以逻辑上下一步是->

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。