我想过做
int arr[row][col];
但我想因为我要将整个 arr 多次传递给一个函数,因此它可能会给我 stackoverflow [因为 ROW 和 COL 可以是几千个]。因此,如果我使用指针来代替,那么传递指针将是一种更好的方法,因为我还打算在数组通过各种函数时更改数组的值。
如何使用指针定义数组以及如何将其传递给函数?每当我想访问一个元素时,都打算做 arr[i][j] 。
当您将数组作为参数传递时,您只传递指向其第一个元素的指针,而不是整个数组。
所以函数签名可能看起来像这样:
void some_function(int arr[][col]);
或可选
void some_function(int (*arr)[col]);
如果列大小不是全局编译时常量,那么您也可以将其作为参数传递给函数:
void some_function(const size_t col, int arr[][col]);
或者
void some_function(const size_t col, int (*arr)[col]);
将数组传递给函数是可以的。数组在作为参数传递时被视为指针,即仅复制第一个元素的地址。
但请务必将行数和列数也作为参数传递。