我认为这是一个相对简单的答案。我只是习惯了指针,我刚刚完成但是我无法弄清楚这个错误:
PtrBasicBCGold.cc:27:13:错误:没有匹配的函数来调用 'HelperFunc'maxPtr = HelperFunc(& i1,& i2,& i3,& i4);
^ ~~~~~~~~~ PtrBasicBCGold.cc:3:6:注意:候选函数不可行:没有已知的从'int **'到'int *'的转换 参数;删除& int * HelperFunc(int * i1,int * i2,int * i3,int * 6-14)
生成^ 1错误。
提示是保持增量函数和助手的以下设置。但我无法弄清楚如何在没有这种错误的情况下返回指针。
#include <stdio.h>
int *HelperFunc(int *i1, int *i2, int *i3, int *i4)
{
if(*i1 > *i2 && *i1 > *i3 && *i1 > *i4)
{
return i1;
}
if(*i2 > *i1 && *i2 > *i3 && *i2 > *i4)
{
return i2;
}
if(*i3 > *i1 && *i3 > *i2 && *i3 > *i4)
{
return i3;
}
else return i4;
}
void IncrementMax(int *i1, int *i2, int *i3, int *i4)
{
int *maxPtr;
maxPtr = HelperFunc(&i1, &i2, &i3, &i4);
*maxPtr = *maxPtr + 1;
}
int main() {
int i1, i2, i3, i4;
scanf("%d %d %d %d", &i1, &i2, &i3, &i4);
IncrementMax(&i1, &i2, &i3, &i4);
printf("%d %d %d %d", i1, i2, i3, i4);
return 0;
}
答案 0 :(得分:6)
问题出在这一行:
maxPtr = HelperFunc(&i1, &i2, &i3, &i4);
您的函数调用与您的原型不匹配。请注意,i1
,i2
等已经是指针,因此您不需要&
这是地址。如果你这样做,它将是指向int的指针,这不是你需要的。
此更改应解决问题:
maxPtr = HelperFunc(i1, i2, i3, i4);