造成此错误的原因是:左侧需要的结构。 要么 。*?

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].n45) 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 ,它们没有字段xy ,因此编译器会告诉你它是一个错误。

最可能的修复方法应该是更改hit函数的trd数组参数的类型,如下所示:

 int hit(TSK trd[],int life, int ply) { ... } 

请注意,由于您在声明之前使用了该函数,因此应在顶部添加原型。

trd是一个int数组。 int没有成员nx

将函数签名修复为int hit(TSK trd[], int life, int ply)

在你的hit函数中, trd参数是一个int数组。 你的意思是改为使用TSK[]类型的参数吗?