我正在尝试获取在某些函数中作为参数传递的数组的长度。
代码如下所示:

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/

10-17 01:27