微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

C ++:通过函数传递指针数组的语法

如何解决C ++:通过函数传递指针数组的语法

所以我有这两个方法:第一个方法是取5个整数值,将它们求和,然后调用findLowest()方法,该方法返回找到的最低值,并从总和中减去(然后除以4并将结果打印到屏幕上。

我认为我遇到的问题是返回的值是内存地址。我试图了解如何取消对整数的引用以获取值,但是说实话,我所查找的所有在线资源都让我头疼。

以下是我到目前为止的内容

void calcAverage(int* arr[5])
{
   int sum = 0;

   for (int a = 0; a < 5; a++)
      sum += *arr[a];

   sum -= findLowest(*arr);

   cout << "AVERAGE " << (sum / 4) << endl;
}


int findLowest(int* arr[5])
{
   int lowest = *arr[0];

   for (int a = 1; a < 5; a++)
   {
      if ((int)arr[a] < lowest)
         lowest = *arr[a];
   }


   return lowest;
}

最重要的是,在显示该行的地方

sum-= findLowest(* arr);

它弹出一个读取错误

“ int *”类型的参数与“ int **”类型的参数不兼容

首先感谢您的帮助,如果帖子有点分散,我们深表歉意:我对开头的指针/参考资料并不真正有信心。

解决方法

您快到了,但是您不应在此行取消引用:

sum -= findLowest(*arr);

相反,只需传入数组,因为这是函数所期望的:

sum -= findLowest(arr);

不相关:

如果可以,请使用std::vectorstd::array,前者用于动态调整大小的数组,后者用于编译时数组。两者都更安全,具有更多功能并且更易于传递。

还可以使用智能指针代替原始指针来拥有指针。智能指针管理对象的所有权,因此您无需手动调用newdelete

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。