在C ++函数中声明输入数组的大小

时间:2016-06-28 23:33:53

标签: c++ arrays

考虑以下C / C ++函数:

void print_array_1(int arr[4]) {
    for (int i = 0; i < 4; ++i) {
        std::cout << arr[i] << std::endl;
    }
}

void print_array_2(int arr[]) {
    for (int i = 0; i < 4; ++i) {
        std::cout << arr[i] << std::endl;
    }
}

当将四元素数组传递给每个函数时,它们都做同样的事情。

有什么真正的区别吗? arr只是指向一大块内存的指针,因此看起来它们应该是等价的。

1 个答案:

答案 0 :(得分:2)

不,没有区别。

正式论证

int arr[4]

衰败到

int* arr

这意味着您可以将其视为函数内部的可修改指针变量,这也意味着有关数组大小的所有信息都已消失。

为正式参数指定和要求某个数组大小的一种方法是使用std::array

void foo( std::array<int, 4> const& arr )

另一种方法是通过引用传递原始数组:

void bar( int (&arr)[4] )