C++:通过函数传递指针数组的语法
C++: Syntax of passing a pointer array through a function
所以我有这两种方法:第一种是取 5 个整数值,将它们相加,然后调用 findLowest() 方法 returns 找到的最低值,然后从求和(然后除以 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);
它弹出一个错误,内容为
argument of type "int *" is incompatible with parameter of type "int **"
提前感谢您的帮助,如果 post 有点乱,我深表歉意:我对 pointer/reference 开始的东西不是很自信。
你快到了,但你不应该取消对这一行的引用:
sum -= findLowest(*arr);
相反,只需传入数组,因为这是函数所期望的:
sum -= findLowest(arr);
不相关:
如果可以,请使用 std::vector
或 std::array
,前者用于动态大小的数组,后者用于编译时数组。这两个都更安全,功能更多,更容易传递。
也使用智能指针代替原始指针来拥有指针。智能指针管理对象的所有权,因此您无需手动调用 new
和 delete
.
所以我有这两种方法:第一种是取 5 个整数值,将它们相加,然后调用 findLowest() 方法 returns 找到的最低值,然后从求和(然后除以 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);
它弹出一个错误,内容为
argument of type "int *" is incompatible with parameter of type "int **"
提前感谢您的帮助,如果 post 有点乱,我深表歉意:我对 pointer/reference 开始的东西不是很自信。
你快到了,但你不应该取消对这一行的引用:
sum -= findLowest(*arr);
相反,只需传入数组,因为这是函数所期望的:
sum -= findLowest(arr);
不相关:
如果可以,请使用 std::vector
或 std::array
,前者用于动态大小的数组,后者用于编译时数组。这两个都更安全,功能更多,更容易传递。
也使用智能指针代替原始指针来拥有指针。智能指针管理对象的所有权,因此您无需手动调用 new
和 delete
.