C语言的指针与二维数组

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+jij列元素地址。
2)定义指向行的指针变量访问二维数组
指向行的指针变量定义与赋值
定义形式:类型标识符 (*指针变量名)[行元素个数]
指针变量的存储长:2字节;未赋值前不指向任何量。
如:int (*p)[4];
      定义p为指向行的指针变量,p可用来指向具有4
      int元素的数组行。
赋值形式:行指针变量=数组行的指针
原文地址:https://www.cnblogs.com/absolute8511/p/1649675.html