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

Declaring size of input array in C++ function

本文关键字:数组 输入 声明 函数      更新时间:2023-10-16

考虑以下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只是指向大量内存的指针,因此似乎应该等效。

不,没有区别。

正式参数

int arr[4]

衰减

int* arr

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


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

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

另一种方法是通过参考传递原始数组:

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