我想这是一个相对简单的答案.我只是习惯了指针,我刚刚完成但是我无法弄清楚这个错误:
PtrBasicBCGold.cc:27:13:错误:没有匹配函数调用'HelperFunc'maxPtr = HelperFunc(&i1,&i2,&i3,&i4);
^ ~~~~~~~~~ PtrBasicBCGold.cc:3:6:注意:候选函数不可行:第一个参数没有已知的从'int**'到'int*'的转换; remove&int*HelperFunc(int*i1,int*i2,int*i3,int*i4)
^ 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;
}
Run Code Online (Sandbox Code Playgroud)
问题出在这一行:
maxPtr = HelperFunc(&i1, &i2, &i3, &i4);
您的函数调用与您的原型不匹配.需要注意的是i1,i2等已经指针,所以你不需要&它的地址.如果你这样做,它将是指向int的指针,这不是你需要的.
此更改应解决此问题:
maxPtr = HelperFunc(i1, i2, i3, i4);