变量在作用域里面被声明的是什么类型,就当作什么类型来用。
(1)参数是二维数组,但是要指定第二维的维数。
int array[10][10];
函数声明:void fuc(int a[][10]);
函数调用:fuc(array);
——在函数fuc中,a是二维数组。使用a[i][j]形式来访问数组中元素。
(2)参数使用一维指针数组。
int *array[10];
for(i = 0; i < 10; i++)
array[i] = new int[10];
函数声明:void fuc(int *a[10]);
函数调用:fuc(array);
——在函数fuc中,a是一维指针数组。使用*(a[i] + j)形式来访问数组中元素。
(3)参数使用指针的指针。
int **array;
array = new int *[10];
for(i = 0; i <10; i++)
array[i] = new int[10];
函数声明:void fuc(int **a);
函数调用:fuc(array);
——在函数fuc中, a是指针的指针。使用*(int *)(a + i*d2 + j)形式来访问数组中元素。其中:
a[0]<=>array[0][0],
a[1]<=>array[0][1],
…
a[10]<=>array[1][0]
注:d2为二维数组的二维维数,即列数。并且a + i*d2 + j为地址,所以要把这个类型为指针的指针的地址强制转换为指针来使用。