如何通过引用传递数组

How to pass an array by reference?

本文关键字:数组 引用 何通过      更新时间:2023-10-16

我试图通过引用传递这个数组,但我的代码似乎无法获取函数。帮助

#include <iostream>
using namespace std;
void print( int (&array)[], int lower_bound, int upper_bound );
int main()
{
    // generate array
    const int SIZE = 20;
    int array[SIZE];
    for ( int i = 0; i < SIZE; i ++ ) array[i] = rand()%500;
    // end generate array
    print(array,0,19);
    return 0;
}
void print( int (&array)[], int lower_bound, int upper_bound )
{
    for ( int i = lower_bound; i <= upper_bound; i ++ ) cout << i << " : " << array[i] <<     endl;
}   

如何在CPP中通过引用传递数组?

你几乎得到了正确的语法,但你需要数组的大小,如果你只需要支持一个大小,你可以明确指定:

const int SIZE = 20;
void print( int (&array)[SIZE], int lower_bound, int upper_bound );

或者如果你需要不同大小的函数,可以使用函数模板来推导:

template <size_t N>
void print( int (&array)[N], int lower_bound, int upper_bound )
{
  // code here
}

请注意,C++中有更多惯用的解决方案。一种是通过begin和over-the-end迭代器(纯指针即可)指定范围。其他方法是将std::array用于固定大小的阵列,将std::vector用于动态大小的阵列。