在C中声明结构
为什么我们有头?这和你做的不同(更好?)吗在C中声明结构,c,struct,C,Struct,为什么我们有头?这和你做的不同(更好?)吗 struct node { int data; struct node *next; }*head; 第一个版本声明了一个类型(struct node),以及一个变量head,它是指向struct node的指针。所有列表都需要一个标题,这很有帮助 第二个声明head作为(否则未命名的)struct的类型名。它实际上不会编译,因为内部的struct node*next引用了一个不存在的类型。第一个版本声明了一个类型(struct nod
struct node
{
int data;
struct node *next;
}*head;
第一个版本声明了一个类型(
struct node
),以及一个变量head
,它是指向struct node
的指针。所有列表都需要一个标题,这很有帮助
第二个声明
head
作为(否则未命名的)struct
的类型名。它实际上不会编译,因为内部的struct node*next
引用了一个不存在的类型。第一个版本声明了一个类型(struct node
),以及一个变量head
,它是指向struct node
的指针。所有列表都需要一个标题,这很有帮助
第二个声明
head
作为(否则未命名的)struct
的类型名。它实际上不会编译,因为内部struct node*next
引用了一个不存在的类型。第一节定义了一个变量head
,它是指向结构节点的指针。它可以为空,表示链表中没有元素
第二个块只是声明了一个名为head
的类型。这根本不是一个变量。并且它不会编译,因为它的next
字段struct node
的类型不存在
你可能想要
typedef struct
{
int data;
struct node *next;
}head;
此表单声明了两种类型,struct node
和node
(相同),并定义了一个变量head
。我选择不带typedef的第1个表单,因为它更简单,并且无论如何都不能在结构的next
字段中引用typedef。第一部分定义了一个变量head
,它是指向结构节点的指针。它可以为空,表示链表中没有元素
第二个块只是声明了一个名为head
的类型。这根本不是一个变量。并且它不会编译,因为它的next
字段struct node
的类型不存在
你可能想要
typedef struct
{
int data;
struct node *next;
}head;
此表单声明了两种类型,struct node
和node
(相同),并定义了一个变量head
。我选择不带typedef的第1个表单,因为它更简单,并且无论如何都不能在结构的next
字段中引用typedef。在第一个示例中,您定义了struct
,但还声明head
变量是指向此类struct
的指针
在第二个示例(typedef
)中,您只声明了一些类型同义词(但是
没有变量!)在第一个示例中,您定义了struct
,但也将头
变量声明为指向此类struct
的指针
在第二个示例(typedef
)中,您只声明了一些类型同义词(但是
没有变量!)
在上面的代码中,您将对象head声明为指针,因此为了访问其元素数据,您需要使用->操作符,例如head->data=4;等等
可以创建节点以附加头指针
struct node
{
int data;
struct node *next;
}*head;
其中,与此代码中一样,您创建的每个节点都将属于头部类型。当您删除头部节点时,将产生问题。如果您编写用于删除头部的链表代码,则无法重新定义新头部
在前面的代码中,可以通过在更新头之后更新结构中的下一个元素来更改指针头->在前面的代码中,我们可以轻松地删除上一个头而不丢失新头
typedef struct
{
int data;
struct node *next;
}head;
在上面的代码中,您将对象head声明为指针,因此为了访问其元素数据,您需要使用->操作符,例如head->data=4;等等
可以创建节点以附加头指针
struct node
{
int data;
struct node *next;
}*head;
其中,与此代码中一样,您创建的每个节点都将属于头部类型。当您删除头部节点时,将产生问题。如果您编写用于删除头部的链表代码,则无法重新定义新头部
在前面的代码中,指针可以通过在更新头后更新其结构中的下一个元素来更改->在前面的代码中,我们可以轻松地删除前一个头而不丢失新的头我认为从“样式”的意义上来说更好。。。我的意思是,“node”将在一个可能的“TAD”中使用,因此“head”(通常在处理列表时)需要是一个指针,所以在定义struct节点时声明它,而不是稍后在代码中显式地执行它。我认为从“样式”的意义上来说更好。。。我的意思是,“node”将在一个可能的“TAD”中使用,因此“head”(通常在处理列表时)需要是一个指针,所以在定义struct节点时声明它,而不是稍后在代码中显式地执行它。
typedef struct
{
int data;
struct node *next;
}head;