如何将二维数组传入二维指针中?


有个函数void f(int mat,int m,int n) 如何将一个数组,比如说是int a[3][4]正确的传进去?如果直接使用f((int )a,3,4)来调用的话,函数里面直接写mat[i][j]的话会报错。请问应该如何操作?

编程 c

比利的三角裤 10 years, 10 months ago

如果f要接收一个二维数组做参数,而且需要数组的长度信息的话,那么原型应该是这样:


 void f(int **array, int m, int n);

调用的时候:


 int array[3][4];
f(array, 3, 4);

这个问题的关键大概在于, int array[3][4] 这样定义的变量确实是数组类型( int[3][4] ),而且这个是有长度信息的(用sizeof是可以取到正确的长度的).
但是当数组作为函数参数的时候,将会退化为一个纯粹的指针,无法区分是否是数组,也无法携带长度信息。

瞬发大火球 answered 10 years, 10 months ago

Your Answer