c++ - C++ 中的数组和长度

标签 c++ arrays

我正在尝试获取作为某个函数的参数传递的数组的长度。 代码是这样的:

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/

相关文章:

c++ - 指针递增 1 来遍历数组的元素是否更快?

java - 创建父类(super class)数组,同时维护多态属性

c++ - 带有返回值的 if 语句代码样式

c++ - 用于增强 C++ 项目的 Delphi DLL

c++ - Mex 文件执行时出错,Matlab 窗口

javascript - 选择数组中的所有值

python - Numpy:修改特定位置的数组元素

c++ - volatile 成员不能被成员函数访问

c++ - 查找间接火车连接

php - 在 PHP 中,如何根据某种分组将 mysql 查询的结果拆分为多个数组?