导致此错误的原因是:左侧所需的结构。要么 。*?

时间:2013-01-10 11:20:00

标签: c structure

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()函数。我无法找到导致此错误的原因。请帮助。谢谢。

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:5)

这是编译时错误,而不是运行时错误。之所以会发生这种情况,是因为您尝试访问.x类型数组元素的.yint[]。整数不是struct,它们没有字段xy,因此编译器会告诉您这是一个错误。

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

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

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

答案 2 :(得分:2)

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