我想过做
int arr[row][col];
但是我想因为我要将整个arr多次传递给一个函数,所以它可能会给我stackoverflow [因为ROW和COL可以是几千]。因此,如果我使用指针代替它,那么传递指针将是一种更好的方法,因为我还打算在通过各种函数时更改数组的值。
如何使用指针定义数组,如何将其传递给函数?每当我想访问一个元素时,打算做arr [i] [j]。
答案 0 :(得分: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]);
答案 1 :(得分:0)
将数组传递给函数是可以的。
时,数组在作为参数传递时被视为指针,也就是说,只复制第一个元素的地址。但一定要将行数和列数作为参数传递。