Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        3年前关闭。
                                                                                            
                
        
我收到函数的两个参数的错误:

//incompatible type for argument of swapStruct
//expected Men100mParticipant but argument is of type struct <anonymous>


我的代码是这样的:

int main(){
   ...

   swapStruct(phaseToBeSorted->phase_result[j-1], phaseToBeSorted->phase_result[j]); //error

   ...
}


phaseToBeSorted的类型为Men100mPhaseDetails,定义为:

typedef struct Men100mPhaseDetails{
  char* nameCurrentPhase;
  int current_phase;
  Men100mParticipant phase_result;
} Men100mPhaseDetails * Men100mPhaseDetails;


虽然pase_result应该是Men100mparticipant的数组。 typedef是按原样给出的,我无法更改。

这是Men100m参与者的声明:

typedef struct {
char nameOfParticipant[MAX_LEN_NAME];
double* scores[4];
} Men100mparticipant, *Men100mParticipant;


这是函数swapStruct的声明:

static void swapStruct(Men100mParticipant a, Men100mParticipant b);


我不明白问题出在什么地方,很高兴获得一些解决问题的帮助。

最佳答案

您需要使用:

swapStruct(&phaseToBeSorted->phase_result[j-1], &phaseToBeSorted->phase_result[j]);


编译器正在尽力而为,但是结构类型名称令人困惑。


  它实际上有效,但是为什么需要'&'?


phaseRoBeSorted->phase_result[j-1]的类型为Men100mparticipant,带有两个小写的p-是结构。 swapStruct函数采用两个Men100mParticipant类型的参数(带有大写字母P),因此它需要两个指针。当然,&传递数组元素的地址,以便函数获取指针,而不是结构的副本。



这个typedef(似乎由课程讲师给出,不能更改)是可怕的:

typedef struct { … } Men100mparticipant, *Men100mParticipant;


第一个字母P的大小写确定类型是否为指针,这是一个麻烦。通常,Is it a good idea to typedef pointers?表示“否”。当有需要时(我不认为这是可能需要使用它的示例),在名称中使用大写和小写比较使区别更加明显。

关于c - C-参数的类型为struct <anonymous>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39190431/

10-11 19:38
查看更多