C 结构不兼容类型错误

C 结构不兼容类型错误,c,structure,C,Structure,我正在尝试用C语言编程扑克游戏。 我不允许更改功能: void eval_strength(struct hand *h){ //mycode } void eval_players_best_hand(struct player *p){ int i; p ->best_hand = p->hands[0]; for(i=0; i <MAX_COMBINATIONS; i++){ if(eval_strength(p-

我正在尝试用C语言编程扑克游戏。 我不允许更改功能:

void eval_strength(struct hand *h){

 //mycode

}

void eval_players_best_hand(struct player *p){

    int i; 
    p ->best_hand = p->hands[0];
      for(i=0; i <MAX_COMBINATIONS; i++){
         if(eval_strength(p->hands[i])) > p->best_hand){
           p->best_hand = p->hands[i];
       }
     }
在函数void eval_players_best_hand(struct player*p)中,我试图为数组中的每只手评估手的力量。然后我必须把最好的手指向最强的手。eval_strength是另一个函数,它将根据手的强度设置手向量

eval_strength()
需要一个指向struct hands的指针作为参数。您正试图向它传递实际的结构,而不是指向它的指针

因此,您的
if
语句应为:

if(eval_strength(&p->hands[i])) > p->best_hand){ 

看到区别了吗?

struct-hand*
struct-hand
是两种不同的类型。一个是指针,另一个不是。这两种类型不兼容。现在回想一下你读过的文章,想想如何从一个值生成指针;但是它给了我无效的一元*错误。也许你应该阅读更多关于
&
操作符的内容?通常称为操作员地址。
if(eval_strength(&p->hands[i])) > p->best_hand){