以下是制作链表的代码部分
struct node
{ int data;
struct node *link;
}*head;
在上面的源码中,我想问一下head是否是“node”的变量。我认为,当我用结构声明它时,它必须是定义的结构的变量,因此包含数据部分和地址部分。 如果我错了,谁能告诉我 *head 的作用是什么?它是否是一个变量?
现在,这是同一源代码的第二部分
void addbeg()
{
int d,g;
struct node *temp;
temp=(struct node *)malloc(sizeof(struct node));
}
这里void addbeg
是一个函数,现在我们在这里声明另一个变量 struct node
,那么为什么我们要为其分配等于 int
的内存呢? ,因为它是一个结构节点的变量,所以它必须包含指针和 int
的大小。但为什么仍然分配内存。还请解开这个疑惑。
最佳答案
我会尝试简要解释您的问题,但为了解决您的困惑,@ForceBru 的评论是正确的想法。
在
C
中使用struct
,在定义struct
之后定义变量是执行这些操作的捷径分两步,即等于define the struct
+struct node *head
(定义一个指向struct节点的变量/指向节点的指针)。temp
作为指向结构节点的指针,与变量node
类似,只不过它现在指向刚刚在中分配的真实结构节点内存空间(使用malloc
)。它与以下代码类似,但不同之处在于编译器或您自己是否应该管理分配的内存(由于动态内存分配)。// define a struct node that's allocated and managed by the compiler struct node nodeOfTemp; struct node *temp = &nodeOfTemp;
关于c - 将变量定义为结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42180606/