【发布时间】:2016-03-03 21:17:11
【问题描述】:
请查看此代码块:
typedef struct node
{
int data;
struct node *next;
}
Node;
在这段代码中,Node 是 typedef 定义的 struct node 的同义词,还是 node 是 struct 的同义词?如果是后者,那么struct node *next;是否等同于struct struct *next;?
我是不是把事情复杂化了?
【问题讨论】:
-
您的结构是通常称为“链表”的结构的一部分。如果您想知道如何使用它以及为什么写
struct node *next,请搜索它。至于您的问题,在您的代码中使用struct node { ... };,您必须将变量声明为struct node mynode1;。使用typedef struct node Node;你只需要写Node mynode1 -
我认为它会产生错误...
Node* hashtable[SIZE],另一方面,会生成一个包含 SIZE 元素的数组;它们中的每一个都是一个指向结构节点的指针(因此,由于每个结构都可以被认为是列表的头,它是一个 SIZE 列表的数组,或者它可以是一个包含指向同一列表的各个元素的指针的数组,它取决于你如何使用它) -
@frarugi87 为什么
int x;声明一个指向名为 x 的 int 没有指针,而Node* hashtable[SIZE];声明一个指向Node的 SIZE 指针数组(Node是指针) ? -
不,
int x;没有声明指向 int 的指针。它声明并定义了一个 int。int* x;声明一个指向 int 的指针,与Node* onenode相同。然后,就像int arr[2]声明一个包含两个 int 的数组,int* arr[2]声明一个包含两个指向 int 的指针的数组,Node* arr[2]声明一个包含两个指向struct node的指针的数组,又名Node
标签: c struct linked-list declaration