此错误的原因是什么:的左侧需要结构。或*? [英] what is the cause of this error: Structure required on left side of . or .*?

查看:27
本文介绍了此错误的原因是什么:的左侧需要结构。或*?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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。整数不是structs,它们没有字段xy,因此编译器会告诉您这是一个错误。

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

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

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

这篇关于此错误的原因是什么:的左侧需要结构。或*?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆