假设有一个二维数组int a[M][N],要把它作为参数传给一个函数fun();
有三种方式:(假设fun函数里有局部变量int i,int j)
第一种:fun(int b[][N])
二维数组传参后,通过b[i][j]或者*(*(b+i)+j)的方式来对数组进行操作;
第二种:fun(int (*b)[N])
二维数组传参后,通过b[i][j]或者*(*(b+i)+j)的方式来对数组进行操作;
第三种:fun(int* b, int M*N)
二维数组传参后,通过*(b+N*i+j)的方式来对数组进行操作;
以上三种情况,第一与第二种方式调用fun时都是写成fun(a),第三种方式调用fun时写成fun(a,M*N);
注意:二维数组在底层实际上是一个很长的一维数组,三维四维也都是一样。
另外:如果是一维数组传参的话,就比较简单了,一般是fun(int b[N])与fun(int* b,int N)。