C中的malloc()函数

时间:2009-08-01 11:34:00

标签: c malloc

有人可以解释一下吗?

struct node 
{ 
    int data; 
    struct node * link; 
} 
main() 
{
    struct node *p, *list, *temp; 
    list = p = temp = NULL; 
    ......................... 
    ......................... 
} 

addbeg() 
{ 
    int x;
    temp=malloc(sizeof(struct node));
    scanf("%d", &x); 
    temp->data=x;
    temp->link = list;
    list=temp;
}

这是一个通过C语言在链表中输入数据的代码。代码不完整,但我认为它足以达到目的。请解释基本上这些代码的编码:

 temp=malloc(sizeof(struct node));

 temp->link = list;
 list=temp;.

4 个答案:

答案 0 :(得分:9)

malloc()用于分配内存 - 在本例中为新节点。

代码中定义的addbeg()函数执行以下操作:

  1. 定义临时变量x
  2. 为新节点分配空间。
  3. 输入一个整数(%d代码到scanf)并将其存储在x
  4. 将保存到x的值存储在新分配的节点的数据字段中。
  5. 将变量“list”指向的列表的旧“头部”存储为新分配的节点中的链接。
  6. 将新节点设置为存储在变量“list”中的列表的新头部。
  7. 这是整数链表(http://en.wikipedia.org/wiki/Linked_list)的一个非常基本的实现。

答案 1 :(得分:0)

malloc为新节点分配空间。

temp->link = list

list = temp

将新节点作为列表的头部。

答案 2 :(得分:0)

第一行:为列表的单个附加节点分配内存。

第二行:将当前列表作为此元素后的延续。

第三行:将当前元素作为列表的开头。

答案 3 :(得分:0)

temp和list在addbeg中不可见,因为它们是在main中声明的。它们要么需要传入addbeg,要么在main(global,yuck)之外声明。