返回指针的函数; 在C.

D. *_*aul 0 c

我想这是一个相对简单的答案.我只是习惯了指针,我刚刚完成但是我无法弄清楚这个错误:

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)

art*_*rtm 6

问题出在这一行:

maxPtr = HelperFunc(&i1, &i2, &i3, &i4);

您的函数调用与您的原型不匹配.需要注意的是i1,i2等已经指针,所以你不需要&它的地址.如果你这样做,它将是指向int的指针,这不是你需要的.

此更改应解决此问题:

maxPtr = HelperFunc(i1, i2, i3, i4);