1、二维数组
int array[10][10];
函数声明: void fun(int a[][10])
函数调用:fun(array);
访问: 一般使用a[i][j]来访问数组中的元素
2、指针数组
int *array[10];
函数声明:void fun(int *a[10]);
函数调用:fun(array);
访问:使用*(a[i]+j)访问数组中的元素
3、指向指针的指针
int **array;
函数声明:void fun(int **a);
函数调用:fun(array);
访问:*(*(a+i) + j) 或者a[i][j]访问元素(使用双重指针表示的二维数组的访问方法)
首先你需要明白二维数组名和指针的关系
对于这个二维数组,我们举例为:
1 2 3 4
5 6 7 8
9 10 11 12
因为数组名表示数组的首地址,
<1>所以a表示第一行的首地址
即:a→1 2 3 4
5 6 7 8
9 10 11 12
这时a+1则表示指向第二列的首地址,即
1 2 3 4
a+1→ 5 6 7 8
9 10 11 12
<2>而此时a[0]表示第一行第一列的首地址
a[0]
↓
1 2 3 4
5 6 7 8
9 10 11 12
a[0]+1 表示第一行第二列的首地址
a[0]+1
↓
1 2 3 4
5 6 7 8
9 10 11 12
<3>明白上面的东西你还需要明白**p表示什么意思
float **p, *j, i=100.12;
j=&i;
p=&j;
参考网页: 指针 数组的深入理解 http://blog.chinaunix.net/xmlrpc.php?r=blog/article&id=4979805&uid=20682147
双重指针的合理应用 http://www.jb51.net/article/72226.htmhttp:/