读书人

c语言新手 cannot convert parameter

发布时间: 2012-06-08 12:55:24 作者: rapoo

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);    }}
[解决办法]
探讨
printf里面的%和变量的一一对应关系
scanf里面的%和变量以及变量前加不加&的一一对应关系
是C代码中非常容易出错的地方。
所以在编译源代码之前值得专门仔细检查一遍甚至多遍。

C/C++ code

#include <stdio.h>
struct student {
char name[20];//姓名
int number ;//……

[解决办法]
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;   }} 

读书人网 >C语言

热点推荐