以下是为编制链表而编写的代码的一部分
struct node
{ int data;
struct node *link;
}*head;
在上面的源代码中,我想问一下head是否是" 节点"的变量。或不。我认为,当我用结构声明它时,它必须是定义结构的变量&因此包含数据部分和地址部分。 如果我错了可以请任何人告诉我* head&的作用是什么它是变量还是不变量?
现在,这是同一源代码的第二部分
void addbeg()
{
int d,g;
struct node *temp;
temp=(struct node *)malloc(sizeof(struct node));
}
这里void addbeg
是一个函数,现在我们在这里向struct node
声明了另一个变量,那么我们为什么要将它的内存分配给int
,因为它是struct节点的一个变量,所以它必须包含指针大小和&一个int
。但为什么还要分配内存。请清除这个疑问。
答案 0 :(得分:1)
我会简单解释一下你的问题,但为了解决你的困惑,@ ForceBru的评论是正确的想法。
在struct
中C
的使用,在struct
的定义之后定义变量是分开执行这两个步骤的捷径,即它等于{ {1}} + define the struct
(定义指向结构节点的变量/指向节点的指针)。
struct node *head
作为指向struct节点的指针类似于变量temp
,除了它现在指向一个刚刚在内存空间中分配的真实struct节点(使用{{ 1}})。它类似于下面的代码,但是编译器或你自己应该管理分配的内存(由于动态内存分配)不同。
node