繁体   English   中英

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

[英]C++: Syntax of passing a pointer array through a function

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

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

以下是我到目前为止所拥有的:

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

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

sum -= findLowest(arr);

无关:

如果可以,请使用std::vectorstd::array ,前者用于动态大小的 arrays,后者用于编译时数组。 这两种都更安全,功能更多,也更容易传递。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM