1)用指向变量的指针变量访问二维数组
若有定义:#define N 3 #define N 4
int i, j, a[N][M], *p; 且p=&a[0][0];
利用p访问二维数组的方法如下:
for(i=0; i<N*M; i++, p++) /*p值不断改变*/
printf("%4d", *p);
按二维数组的存储结构,p顺序指向各元素;
for(i=0; i<N; i++) /*p值固定为&a[0][0]*/
for(j=0; j<M; j++)
printf("%4d", *(p+i*4+j)); /*4为列长*/
其中p+i*4+j:i行j列元素地址。
2)定义指向行的指针变量访问二维数组
指向行的指针变量定义与赋值
定义形式:类型标识符 (*指针变量名)[行元素个数];
指针变量的存储长:2字节;未赋值前不指向任何量。
如:int (*p)[4];
定义p为指向行的指针变量,p可用来指向具有4
个int元素的数组行。
赋值形式:行指针变量=数组行的指针