指针什么时候用malloc,什么时候不用,请大神详解,谢谢!

比如说下面的这个链表逆置,对于p1 p2 p3这三个节点指针,为何没有使用malloc分配空间? 直接定义node *p1 *p2 *p3即可吗? 求解,谢谢~

void fun(node **head)

{

node *p1, *p2, *p3;

p1 = *head;

p2 = p1->next;

p3 = p2->next;

p1->next = NULL;

while(p3!= NULL)

{

p2->next = p1;

p1 = p2;

p2 = p3;

p3 = p3->next;

}

p2->next = p1;

*head = p2;

}

需要在代码中动态分配内存空间时候才用malloc
但是实际上如果代码写得合理的话,几十万行代码的C语言程序也压根不必使用malloc,写个函数里面定义局部变量完全可以满足同样的需求。
上面的函数里,地址已经作为参数传进来了,不必重新分配内存空间,定义指针指向传进来的地址即可,所以不用malloc
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-10-16
链表,只有新增一个节点的时候,才需要malloc,分配实际的空间。
逆序的过程,不需要分配空间,只是把这些节点的连接顺序改变了。

一个节点,可以有多个指针指向它。其他指针不需要malloc。本回答被提问者采纳
相似回答