此错误的原因是什么:的左侧需要结构。或*? [英] what is the cause of this error: Structure required on left side of . or .*?
本文介绍了此错误的原因是什么:的左侧需要结构。或*?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
typedef struct tsk{
int x;
int n;
}TSK;
TSK trd[MAX];
main(){
while(life!=0){
randomize();
for(i=0;i<MAX;i++){
trd[i].n=rand()%40+10;
if(trd[i].n<10||trd[i].n>45)
trd[i].n=rand()%40+10;
trd[i].x=25;
}
for(m=0;m<MAX;m++){
gotoxy(8,m);printf("%c%c",23,23);
gotoxy(7,m);printf("%c",17);
gotoxy(46,m);printf("%c%c",23,23);
gotoxy(48,m);printf("%c",16);
}
for(j=0;j<MAX;j++){
if(life==0)
break;
gotoxy(1,1);
insline();
gotoxy(trd[j].n,1);
printf("%c",3);
trd[j].x--;
gotoxy(ply,25);
printf("%c",1);
gotoxy(1,26);
delline();
score++;
life=hit(trd,life,ply);
gotoxy(57,25);
printf("SCORE: %0.0f LIFE: %d",score,life);
gotoxy(8,1);printf("%c%c",23,23);
gotoxy(46,1);printf("%c%c",23,23);
gotoxy(7,1);printf("%c",17);
gotoxy(48,1);printf("%c",16);
gotoxy(4,1);printf("%c",label[j]);
delay(200);
if(kbhit()){
key=getch();
key=toupper(key);
if(key==27)
life=0;
if(key=='L')
ply++;
if(ply==46)
ply--;
else if(key=='K')
ply--;
if(ply==9)
ply++;
}
}
}
}
int hit(int trd[],int life, int ply){
int i;
for(i=0;i<MAX;i++){
if((trd[i].n==ply)&&(trd[i].x==0))
life-=1;
}
return life;
}
有没有人能帮我纠正这个错误:的左侧需要结构。或*?当我运行该程序时,它给出这个错误,并且它指向Hit()函数。我找不到导致此错误的原因。请帮助。谢谢。
推荐答案
这是编译时错误,不是运行时错误。发生这种情况是因为您试图访问int[]
类型的数组的元素.x
和.y
。整数不是struct
s,它们没有字段x
和y
,因此编译器会告诉您这是一个错误。
最有可能的修复方法应该是更改hit
函数的trd
数组参数的类型,如下所示:
int hit(TSK trd[],int life, int ply) {
...
}
请注意,由于您在声明函数之前使用了该函数,因此应该在顶部添加原型。
这篇关于此错误的原因是什么:的左侧需要结构。或*?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文