我正在尝试获取在某些函数中作为参数传递的数组的长度。
代码如下所示:
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++中查找数组长度有很多问题,但是没有人给我我要找的答案。
提前致谢。
最佳答案
如果必须使用数组,则可以“模板化”函数:
template <size_t length> double getAverage(int (&numbers)[length]) {
int sum = 0;
for (int i = 0 ; i < length ; i++)
{
sum += numbers[i];
}
return (double)sum / length;
}
关于c++ - C++中的数组和长度,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9061928/