[Quote=引用楼主 zhangyanfei01 的回复:]
偶在VC下定义了:
int a[3][3]={...} //a是二维数组,即元素是数组的数组。其名a是首元素a[0](是个数组)的指针&a[0],这是指向有三个int型元素数组的指针
int **p; //p是指向整型指针的指针
p = a; //编译出错 p与a的类型不匹配,不能赋值
结果提示第三行编译出错!而在一维下却能通过,如下
int a[3]={...} //数组名a是数组首元素a[0]的指针(&a[0]),a[0]是个整型数据
int *p; //p是指向整型的指针变量,可以存放一个整型(首)地址
p = a; //p与a类型相同,因此可以可以赋值。
[/Quote]
要想用指针来操纵二维数组,方法有多种:
int a[3][3]={...};
1) int (*p)[3];//p是一个指针,指向有3个整型元素的数组
p=a;
用p访问元素方法:
a[i][j]===*(a[i]+j)===*(*(a+i)+j)===*(*(p+i)+j)===*(p[i]+j)===p[i][j]
2) int *p;
p=a[0];//即p=&a[0][0]
a[i][j]===*(a[i]+j)===*(a[0]+i*3+j)===*(p+i*3+j)