[英]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::vector
或std::array
,前者用于动态大小的 arrays,后者用于编译时数组。 这两种都更安全,功能更多,也更容易传递。
还使用智能指针代替原始指针来拥有指针。 智能指针管理 object 的所有权,因此您无需手动调用new
和delete
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.