关于malloc的困惑
代码如下#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
struct student
{
int num;
int score;
struct student * next;
};
typedef struct student STU;
STU *create(void)
{
STU*head=NULL;
STU*tail=NULL;
head=(STU*)malloc(sizeof(STU));
if(head==NULL)
{
printf("头结点内存申请失败");//什么情况会失败
return NULL;//不理解
}
head->next=NULL;
tail=head;
STU*pnewelement=NULL;
int n,s;
while(1)
{
printf("请输入学号和成绩\n");
scanf("%d%d",&n,&s);
if(n>0 &&s>0)
{
pnewelement=(STU*)malloc(sizeof(STU));
if(pnewelement==NULL){
printf("头结点内存申请失败");
return NULL;
}
pnewelement->num=n;
pnewelement->score=s;
pnewelement->next=NULL;
tail->next=pnewelement;
tail=pnewelement;
}
else
break;
}
pnewelement=head;
head=head->next;
free(pnewelement);
return head;
}
void disp(STU *head)
{
STU*p=head;
while(1)
{
if(p==NULL)
return;
printf("(学号:%d,成绩:%d)\n",p->num,p->score);
p=p->next;
}
}
void main(void)
{
STU* head=NULL;
head=create();
disp(head);
getch();
}
困惑:
1、什么时候会申请失败呢?
2、为什么要return null;
百度到说是返回一个空地址 即0x00000000,,返回的意义是什么?
以及我也不太懂一些程序中返回 return 0;的意义