将变量定义为结构

时间:2017-02-11 20:01:57

标签: c pointers data-structures structure dynamic-memory-allocation

以下是为编制链表而编写的代码的一部分

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。但为什么还要分配内存。请清除这个疑问。

1 个答案:

答案 0 :(得分:1)

我会简单解释一下你的问题,但为了解决你的困惑,@ ForceBru的评论是正确的想法。

  1. structC的使用,在struct的定义之后定义变量是分开执行这两个步骤的捷径,即它等于{ {1}} + define the struct(定义指向结构节点的变量/指向节点的指针)。

  2. struct node *head作为指向struct节点的指针类似于变量temp,除了它现在指向一个刚刚在内存空间中分配的真实struct节点(使用{{ 1}})。它类似于下面的代码,但是编译器或你自己应该管理分配的内存(由于动态内存分配)不同。

    node