c语言新手 求救cannot convert parameter 1 from 'struct main::student *' to 'struct stud
# include<stdio.h>
struct student * find(struct student *pst,int n);
void main()
{
struct student {
char name[20];//姓名
int number;//学号
float score;//成绩
} stu[5]={
{"liu yi",333,90},
{"zhang er",222,87},
{"li jun",333,92},
{"ao bama",444,97},
{"yao ming",555,88}
};
int a;struct student * pst;struct student * p;
pst=&stu[0];
scanf("%d",a);
p=find(pst,a); 错误指向这里
}
struct student * find(struct student *pst,int n)
{
struct student * p;
for (p=pst;p<pst+5;p++)
{if ( p->number==n)
return p;
}
}
[解决办法]
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。
- C/C++ code
#include <stdio.h>struct student { char name[20];//姓名 int number ;//学号 float score ;//成绩} stu[5]={ {"liu yi" ,111,90.0f}, {"zhang er",222,87.0f}, {"li jun" ,333,92.0f}, {"ao bama" ,444,97.0f}, {"yao ming",555,88.0f},};struct student *find(struct student *pst,int n) { struct student *p; for (p=pst;p<pst+5;p++) { if (p->number==n) return p; } return NULL;}void main() { int a; struct student *pst; struct student *p; pst=&stu[0]; while (1) { scanf("%d",&a); p=find(pst,a); if (NULL==p) return; printf("%s,%d,%g\n",p->name,p->number,p->score); }}
[解决办法]
[解决办法]
- C/C++ code
#include <stdio.h>struct student { char name[20];//姓名 int number;//学号 float score;//成绩} stu[5] = { {"liu yi",333,90}, {"zhang er",222,87}, {"li jun",333,92}, {"ao bama",444,97}, {"yao ming",555,88}};struct student * find(struct student *pst,int n);void main(){ int a; struct student * pst; struct student * p; pst=&stu[0]; scanf("%d", &a); p=find(pst,a); //错误指向这里}struct student * find(struct student *pst,int n){ struct student * p; for (p=pst;p<pst+5;p++) { if ( p->number==n) return p; }}