Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
3年前关闭。
我收到函数的两个参数的错误:
我的代码是这样的:
phaseToBeSorted的类型为Men100mPhaseDetails,定义为:
虽然pase_result应该是Men100mparticipant的数组。 typedef是按原样给出的,我无法更改。
这是Men100m参与者的声明:
这是函数swapStruct的声明:
我不明白问题出在什么地方,很高兴获得一些解决问题的帮助。
编译器正在尽力而为,但是结构类型名称令人困惑。
它实际上有效,但是为什么需要'&'?
这个
第一个字母P的大小写确定类型是否为指针,这是一个麻烦。通常,Is it a good idea to typedef pointers?表示“否”。当有需要时(我不认为这是可能需要使用它的示例),在名称中使用大写和小写比较使区别更加明显。
想改善这个问题吗? 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/