我正在尝试获取作为某个函数的参数传递的数组的长度。 代码是这样的:
double getAverage(int numbers[])
{
int length = sizeof(numbers)/sizeof(numbers[0]);
// here the result of the length is 1.
int sum = 0;
for (int i = 0 ; i < length ; i++)
{
sum += numbers[i];
}
return (double)sum / length;
}
int main()
{
int numbers[8] = {1,2,3,4,5,6,7,8};
//if I call here sizeof(numbers)/sizeof(numbers[0] the result will be 8 as it
//should be.
cout << getAverage(numbers) << endl;
return 0;
}
我的问题是如何获取通过引用作为函数参数传递的数组长度(尽管我知道每个数组都是通过引用传递的)? 我知道有很多关于在 C/C++ 中查找数组长度的问题,但没有一个能给我我正在寻找的答案。 提前致谢。
最佳答案
您必须明确地将数组的长度作为参数传递给函数。
你传递给函数的只是一个指向数组的指针,而不是数组本身,所以在函数内部没有办法确定数组的长度,除非你显式地将长度作为函数参数传递。
您或许可以使用 std::vector
,它提供成员函数来获取 vector 中的元素,使用 std::vector::size()
,这是你能做的最好的事情,没有办法使用 c 风格的数组来做到这一点。
关于c++ - C++ 中的数组和长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9061928/