[转]二维数组参数传递

http://blog.csdn.net/hanpingliang/article/details/3380351

变量在作用域里面被声明的是什么类型,就当作什么类型来用。

(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]); //传递参数为指向数组的指针(此处不可写成 int *a[10],则表示为指针数组)

函数调用:fuc(array);

——在函数fuc中,a是一维指针数组。使用*(a[i] + j) 或 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[i][j],则会报错。因为,二维数组,只退化指向数组的指针,而不是二维指针。因此,只能通过计算其位置而访问数据。

posted @ 2012-08-19 21:20  名字长不够写  阅读(200)  评论(0编辑  收藏  举报