typedef struct node
{
int data;
struct node *next;
}Node; // ???
我不明白为什么我们在定义后使用Node。执行什么功能?它是否会阻止结构无限地指向自身? 问题可能听起来很愚蠢,我还在学习。 谢谢。
答案 0 :(得分:2)
在结构定义之后有一个Node
,因为之前有一个typedef
。
结构定义本身就是:
struct node
{
int data;
struct node *next;
};
由于这是C ++,这足以通过名称node
引用结构类型。然而,似乎编写它的人最初要么是来自C背景,要么是为了提供C兼容的头。在C中,你必须将其称为struct node
,有些人认为这是冗长的。所以有问题的人立即提供了一个类型别名。您提供的代码相当于:
struct node
{
int data;
struct node *next;
};
typedef struct node Node;
它允许我们在C或C ++中用名称Node
引用相同的类型。
答案 1 :(得分:0)
在这里,您已定义了一个结构,并同时声明了一个结构变量。 typedef
关键字用于创建Node
类型,类型为struct node
。
因此,您可以轻松使用Node n1;
代替struct node n1
。