二维数组的初始化
int a[2][2] = {{1,2},{3,4}};
或者 int a[][2] = {{1,2},{3,4}};
即,第一维可以省略,第二维大小不可以省略
在内存中二维数组是连续存放的,并不是真的是二维,在访问a[i][j]时,通过访问 a+ i*n+j (其中二维数组大小为m*n),所以如果省略第二维的大小,则无法访问,所以第二维绝对不能省略
二维数组作为形参
void func(int a[2][2])
void func(int (*a)[2])
int (*a)[2]表示一个二维数组
[]的优先级高于*,所以()不可省略 int *a[2]表示一个一维数组,数组数据类型为(int *)整形指针
void func(int a[][2])
void func(int **a,int m,int n)
把二维数组当作一维数组来处理,a[i][j] 的访问形式为 *((int*)a + n*i +j)
参考:
http://blog.youkuaiyun.com/xudongdong99/article/details/6723163
http://www.cnblogs.com/yangxi/archive/2012/03/22/2411452.html