返回指针的函数;在C.

时间:2016-08-07 01:00:10

标签: c

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

  

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;
 }

1 个答案:

答案 0 :(得分:6)

问题出在这一行:

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

您的函数调用与您的原型不匹配。请注意,i1i2等已经是指针,因此您不需要&这是地址。如果你这样做,它将是指向int的指针,这不是你需要的。

此更改应解决问题:

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