我知道Non-portable pointer conversion是 不可移动的指针转换 但是不知道怎么修改 请各位帮帮忙!!

来源:百度知道 编辑:UC知道 时间:2024/06/19 05:05:09
Non-portable pointer conversion已经知道是 不可移动的指针转换 但是不知道怎么修改 请各位帮帮忙!!
代码如下:
create()
{
struct link *head;
struct link *p1,*p2;
n=0;
p1=p2=(struct link * )malloc(L);/*L有宏定义*/
scanf("%ld,%c,%f",&p1->num,&p1->name[10],&p1->scor[3]);
head=NULL;
while(p1->num!=0)
{
n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=(struct link * )malloc(L);
scanf("%ld,%c,%f",&p1->num,&p1->name[10],&p1->scor[3]);
}
p2->next=NULL;
return(head);/*这里出的错*/
}
这是一个调用函数,返回head,就是return(head);这里出错了!!!!

函数的返回类型是什么?你没贴全还是你没写?
你试着弄成 void * 或者明确声明为struct link *
另外,scanf当中,应该是 %s;
从代码上看,你想输入若干学生ID,名字,成绩并存入链表。
但是代码逻辑太混乱了。

p1=p2=(struct link * )malloc(L);/*L有宏定义*/
scanf("%ld,%s,%f",&p1->num,&p1->name[10],&p1->scor[3]);
head=p1;
p1->next = NULL;
while(p1->num!=0)
{
n=n+1;
p2=p1;
p1=(struct link * )malloc(L);
p1->next = NULL ;
scanf("%ld,%s,%f",&p1->num,&p1->name[10],&p1->scor[3]);
p2->next = p1 ;
}
return head ;

你的函数没有返回类型啊