指针引用多维数组
*除了表示取元素之外,还可以表示取哪一维
对于二维数组:
1、
a是一个行指针。指向一个有四个元素的数组,占16个字节
&a是一个指向二维数组的指针,二维数组有12个元素,占48个字节
*a是一个指向int类型数据的指针。
2、
a[i][j]等价于*((a+i)+j) &a[i][j]等价于(a+i)+j
a[i]等价于*(a+i) &a[i]
3、 二维数组名是指向行的,它不能对如下说明的指针变量p直接赋值:
int a[3][4]={
{10,11,12,13},{20,21,22,23},{30,31,32,33}},*p;
其原因就是p与a的对象性质不同,或者说二者不是同一级指针。C语言可以通过定义行数组指针的方法,使得一个指针变量与二维数组名具有相同的性质。
行数组指针的定义方法如下:
数据类型 (*指针变量名)[二维数组列数];
例如,对上述a数组,行数组指针定义