结构体作为函数参数时出现的的低级错误
写作业时,编译器出现这个报错: expected expression before struct 而且是在,每个调用结构体的地方都出错了。 部分代码如下:
#define NAME_LEN 25
#define MAX_PARTS 100
struct part {
int number;
char name[NAME_LEN+1];
int on_hand;
};
int read_line(char str[], int n);
int find_part(int number, const struct part inv[], int np);
void insert(struct part inv[], int *np);
void search(const struct part inv[], int np);
void update(struct part inv[], int np);
void print(const struct part inv[], int np);
int main(){
char code;
int np=0;
struct part inv[MAX_PARTS];
for(;;){
printf("Enter the code:");
scanf("%c",&code);
while(getchar()!=
);
switch (code){
case i:
insert(struct part inv[], int *np);
break;
case s:
search(const struct part inv[], int np);
break;
case u:
update(struct part inv[], int np);
break;
case p:
print(const struct part inv[], int np);
break;
case q:
return 0;
default:
printf("ERROR!");
break;
}
printf("
");
}
}
然后上网查询发现,是因为对结构体的基本定义都没吃透! 在上面的struct part就相当已经建立了一种part的新类型了,结果在调用函数是又一次加上了struct part就重复了,之后改成如下就好了:
int main()
{
char code;
int np = 0;
struct part inv[MAX_PARTS];
for (;;) {
printf("Enter the code:");
scanf("%c", &code);
while (getchar() !=
);
switch (code) {
case i:
insert(inv, &np);
break;
case s:
search(inv, np);
break;
case u:
update(inv, np);
break;
case p:
print(inv, np);
break;
case q:
return 0;
default:
printf("ERROR!");
break;
}
printf("
");
}
}
刚开始改的时候又把*[MAX_PARTS]*给加上了结果编译时报错: expected const struct part*,but argument is of type struct part也就是参数并非所要的指针,把中括号去掉即可
