gpt4 book ai didi

c - 结构中的变量不明确 - 双链表

转载 作者:太空宇宙 更新时间:2023-11-04 03:31:33 27 4
gpt4 key购买 nike

我正在分析我要在其上构建双向链表的这段代码:

struct dplist_node {
dplist_node_t * prev, * next;
element_t element;
};

struct dplist {
dplist_node_t * head;
// more fields will be added later
};

在包含的头文件中,我发现了以下几行:

typedef int element_t;
typedef struct dplist dplist_t;
typedef struct dplist_node dplist_node_t;

我从中收集到的是 dplist_node_t 是结构 dplist_node 的类型定义,但在两个结构中仍然有指向 dplist_node_t(因此是 dplist_node)的指针。

我发现所有这些都非常令人困惑,似乎无法弄清楚哪个元素是哪个结构或哪个指针指向哪里。谁能帮我理解一下?

最佳答案

其实这个等价声明更容易理解:

struct dplist_node {
struct dplist_node * prev, * next;
element_t element;
};

struct dplist {
struct dplist_node * head;
// more fields will be added later
};

typedef 在这种情况下只会增加困惑。

与:

typedef struct dplist dplist_t;

你可以用dplist_t代替struct dplist,或者用dplist_t*代替struct dplist*

插图

struct dplist_node {
struct dplist_node * prev, * next;
element_t element;
};

这里很明显prevnext是指向struct dplist_node本身的指针。

原始声明:

struct dplist_node {
dplist_node_t * prev, * next;
element_t element;
};

当我们看到这个时,我们不知道 dplist_node_t 是什么,除非我们查看头文件,其中 dplist_node_t 被定义为等同于 struct dplist。所以 IMO 不太清楚。

关于c - 结构中的变量不明确 - 双链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36065087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com