c - 如何将二维数组传递给C中的函数?

标签 c arrays

我的函数原型(prototype)是

int** rotate(int **arr, int row, int col, int fl);

其中arr是二维数组,rowcol分别是二维数组的行数和列数,fl 是一个标志变量。如果fl的值为0则数组将向右旋转,如果fl为1则数组将向左旋转。

我按如下方式调用该函数:

int **res= rotate(arr, row, col, fl);

但是我收到了一个警告和一个注释

[Warning] passing argument 1 of 'rotate' from incompatible pointer type.

[Note] expected 'int **' but argument is of type 'int (*)[20]' 

最佳答案

指向指针的指针与指向数组的指针不同。数组到指针的衰减只能发生在最左侧(例如 int [3][20]int (*)[20] )。

将函数声明更改为

int** rotate(int (*arr)[20], int row, int col, int fl);

或更明显的是,

int** rotate(int arr[][20], int row, int col, int fl);

请注意,您必须在编译时修复大小。

关于c - 如何将二维数组传递给C中的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47904671/

相关文章:

c - 我试图用下面的代码解决这个迷宫。但是对于 n=4 这样的所有输入,答案并不准确

python - 使用切片的数组赋值

php - 稳定的 uasort - 为什么顺序被颠倒了?

c++ - 使用多态基类(包含虚函数)访问时数组元素的类型

在循环中调用 pthread_cancel() 显示内存使用量增加

c - 我的for循环一会儿循环不起作用吗?

r - 设置数组中矩阵的行名称

C:从字符串中删除符号

c - 避免 ANSI C 中的 SD 卡损坏

c - 是否有标准的指针大小声明?