gpt4 book ai didi

挑战 Node 语法

转载 作者:行者123 更新时间:2023-11-30 21:05:47 26 4
gpt4 key购买 nike

以下是C语言中链表的语法,部分内容

struct tag-name
{
type member1;
type member2;
.......
.......
struct tag-name *next;
};

为什么接下来我们必须在指针变量之前再次写入struct tag-name。为什么我们不能使用 void *next 或 int *next 或类似的东西?

最佳答案

对于链接列表 next条目(或任何名称)必须指向下一个节点。在您的情况下,节点类型是 tag-name

所以你需要<type> next;

在 C 中(与 C++ 不同),请求指向名为 x 的结构的指针的方式是 struct x * 。因此,您看到的代码会让您感到困惑/不安。你能简化一下吗?是的你可以。 C有typedef 。你可以做

typedef struct tag-name node;

现在你可以拥有

struct tag-name
{
type member1;
type member2;
.......
.......
node *next;
};

你问我可以void* next 。是的,但是为什么要这么做呢?您必须继续将该指针转换为指向结构的指针(编译器不隐式知道它指向什么),代码的读者也会感到惊讶,因为他们期望下一个指针是指向节点的指针。

你问是不是int next 。不,不能,下一个对象是一个节点,而不是一个 int

关于挑战 Node 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52634156/

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