0

我想过做

int arr[row][col];

但我想因为我要将整个 arr 多次传递给一个函数,因此它可能会给我 stackoverflow [因为 ROW 和 COL 可以是几千个]。因此,如果我使用指针来代替,那么传递指针将是一种更好的方法,因为我还打算在数组通过各种函数时更改数组的值。

如何使用指针定义数组以及如何将其传递给函数?每当我想访问一个元素时,都打算做 arr[i][j] 。

4

2 回答 2

3

当您将数组作为参数传递时,您只传递指向其第一个元素的指针,而不是整个数组。

所以函数签名可能看起来像这样:

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]);
于 2013-07-12T09:05:51.607 回答
0

将数组传递给函数是可以的。数组在作为参数传递时被视为指针,即仅复制第一个元素的地址。

但请务必将行数和列数也作为参数传递。

于 2013-07-12T09:07:20.747 回答