VS2012 Error:不存在从“——”到“——*”的适当转换函数—已解决

源代码功能为建立并输出链表。《C程序设计》P316。

源代码如下:

#include
#include
#define LEN sizeof(struct Student)
struct Student
{
long num;
float score;
struct Student* next;
};
int n;
struct Student* creat()
{
struct Student* head;
struct Student* p1,*p2;
n = 0;
p1 = p2 =(struct Student*)malloc(LEN);
scanf_s("%ld,%f",&p1->num,&p1->score);
head = NULL;
while (p1 -> num!= 0)
{
n = n + 1;
if(n == 1)head = p1;
else p2 -> next = p1;
p2 = p1;
p1 = (struct Student*)malloc(LEN);
scanf_s("%ld,%f",&p1 -> num,&p1 -> score);
}
p2 -> next = NULL;
return(head);
};
void print(struct Student head )
{
struct Student* p;
printf("\nNow,These %d records are:\n",n);
p = head;
if(head != NULL)
do
{
printf("%ld %5.1f\n",p->num,p->score);
p = p->next;
} while (p != NULL);
}
void main()
{
struct Student* head;
head = creat();
print(head);
}

编译时出现如下错误:

VS2012 Error:不存在从“——”到“——*”的适当转换函数—已解决_第1张图片

VS2012 Error:不存在从“——”到“——*”的适当转换函数—已解决_第2张图片

查找后发现是head忘了加*。将void print(struct Student head )改为void print(struct Student *head ),则编译时顺利通过。

VS2012 Error:不存在从“——”到“——*”的适当转换函数—已解决_第3张图片

你可能感兴趣的:(VS2012)