[求助]关于free()函数的用法!
题目:链表的插入(某些函函数程序没写)#include<stdio.h>
#include<stdlib.h>
struct NUM
{
int num;
struct NUM *next;
};
#define LEN sizeof(struct NUM)
struct NUM *insert(struct NUM *head,struct NUM *p0);
void print(struct NUM *head);
struct NUM *release(struct NUM *head);
int main()
{
struct NUM *newnode;
struct NUM *headpoint;
int number;
headpoint=NULL;
printf("输入一个数,输入0结束:");
scanf("%d",&number);
while(number!=0)
{
newnode=(struct NUM *)malloc(LEN);
if(!newnode)
{
printf("内存不足!!\n");
return 0;
}
newnode->num=number;
headpoint=insert(headpoint,newnode);
printf("输入一个数,输入0结束:");
scanf("%d",&number);
}
printf("插入结束!\n");
print(headpoint);
headpoint=release(headpoint);
return 0;
}
...............
..............
struct NUM *release(struct NUM *head)
{
struct NUM *p=head;
while(head)
{
head=p->next;
free(head);
p=head;
}
return head;
}
问题:为什么调用时要headpoint=free(headpoint),能不能把它改成free(headpoint)?
还有,为什么要返回值?不要返回值行不?
----------------解决方案--------------------------------------------------------
headpoint=free(headpoint),楼主冒似写错了哦
是headpoint=release(headpoint);
吧
返回值方便其他地方可以操作headpoint,不返回想用起来就不知道怎么找了
----------------解决方案--------------------------------------------------------
假的吧,该函数的功能是释放动态申请的由指针P指向的储存空间,没有返回值得,只针对动态申请的函数malloc和calloc申请的空间,将它们返回给系统后,由系统重新分配该空间
----------------解决方案--------------------------------------------------------
是了,我写错了!
"返回值方便其他地方可以操作headpoint,不返回想用起来就不知道怎么找了"那是什么意思?
----------------解决方案--------------------------------------------------------
还有,什么时候要返回什么时候不用返回?
----------------解决方案--------------------------------------------------------
我是菜鸟,你的意思是不用返回!
我就是把返回删了编译软件说错误,要一个返回值!
----------------解决方案--------------------------------------------------------
zouxiaohua 的那句话"返回值方便其他地方可以操作headpoint,不返回想用起来就不知道怎么找了"
那释放函数在结束时才调用的,这样就谈不上方便其它地方操作了!
----------------解决方案--------------------------------------------------------