数组指针
格式:
char (*p)[3];
int (*q)[3];
含义:
它是一个指针,执行一个二维数组
赋值:
int (*q)[3];
int a[4][3];
q = a;
理解的方法:把a[4]看成一个整体,
由于a[i] = p[i] = *(a+i) = *(p+i);
所以它和*p是一样的,那a[][3] = (*p)[3]
即q = a;
总结:
a[i][j] <====> *(a[i]+j) <===>*(*(a+i)+j)
p[i][j] <====> *(p[i]+j) <===>*(*(p+i)+j)
a: 二维数组的名字,二维数组的首地址
a[0]: 第0行的首地址
a[0][0]: 二维数组首个元素
&a[0][0] 二维数组首个元素的地址
&a[0] 取第0行的地址
&a 取二维数组的地址
int (*p)[3]; //数组指针,指针,它指向一个二维数组
int *p[3]; ://指针数组,数组,数组中是指针