我真的很想知道struct
中这个C++
发生了什么:
typedef struct nod{
int nr;
nod* next;
}NOD;
我知道struct
是什么以及目的是什么,但我没有意识到为什么“点头”和“NOD”是重复的。结构内部的点头是怎么回事?
此代码来自链式列表。
如果有人可以帮助我,我会很感激!!
答案 0 :(得分:2)
typedef a b
创建别名,以便您可以通过撰写a
来引用b
。因此typedef struct nod {...} NOD
允许您将struct nod
称为NOD
。
如果没有typedef
,即struct nod {...};
,您必须在C代码中将结构称为struct nod
,而在C ++中,您仍然可以简单地将其称为nod
1}}。
nod* next
声明结构的成员变量。该变量的类型是指向nod
的指针,其名称为next
。
答案 1 :(得分:1)
NOD和点头不一样。 NOD是一个typedef,它基本上意味着"结构的名称"。因此,您可以通过键入以下内容来定义它的对象:
NOD node;
然而,nod*
是不同的。它是nod
类型的指针,它是您的结构。这可以用于将不同的struct对象链接在一起并创建一个链接列表,如下所示:
Nod node1;
Nod node2;
Nod node3;
node1->next = node2;
node2->next = node3;
答案 2 :(得分:0)
这在链接的数据结构中定义了节点。每个节点都包含指向另一个节点(相同类型)的指针。
答案 3 :(得分:0)
typedef
将NOD定义为类型struct node
的同义词。因此,之后您可以使用NOD定义struct type node
,NOD可以作为struct node
的盟友。现在,您可以声明一个新的struct node
,但声明更少 -
NOD node1, node2;
node*
内的NOD
指针用于指向另一个struct node
。实际上,这个struct node
数据结构用于表示链表的节点。
答案 4 :(得分:0)
与以下内容相同:
typedef struct nod NOD;
struct nod {
int nr;
nod* next;
};
它是一个链表结构,其结构成员反向引用(指向)它自己的类型。
这是一个旧的C约定(忽略struct关键字),而在C ++中,这里不太需要typedef。