一、一维数组作为输入参数:
大家都知道,如果一维数组作为参数的话,可以按如下方法来定义函数:
int func(int *array);
或者
int func(int array[M]); 其中M是数组的大小。
二、二维数组作为输入参数:
而如果输入参数是二维数组的话,可以按如下方法定义:
1. 直接以二维数组作为参数:
int func(int array[M][N]);
或者 int func(int array[][N]);
也就是说,二维数组作为参数,可以省略第一维的大小,但不可以省略第二维的大小,因为编译器在寻址时是按p + i * N + j来对p[i][j]进行寻址的,所以第二维参数必须给出。
2. 以二维指针作为参数:
int func(int **array);
我们可以定义二维指针,然后寻址时手工进行即可:*((int *)array + i * N + j),前面的(int *)是强制转换成指针类型。