编辑代码

#include <stdio.h>
int main () {
  int a[3][2]={{1,6},{9,12},{61,12}};
  int (*p)[2];//指针一次移动2个元素
  p=a;//p=&a[0][0]

  printf("%p %p\n",a,a+1);
  printf("%p %p\n",p,p+1);//指针加一移动了两个元素
  printf("%p %p\n",*(p+1),*(p+1)+1);//行指针变为一维指针,加1移动一个元素
  


  printf("%d %d %d %d\n",a[1][1],p[1][1],*(*(a+1)+1),*(*(p+1)+1));//*(a+1)和*(p+1)改变了指针的性质,从行指针变为一级指针
  printf("%d %d\n",*(*(a+1)),*(*(p+1)));//最外圈的*表示取值,内圈的*改变指针性质


//遍历整个二维数组
  int i,j;
  for(i=0;i<3;i++){
    for(j=0;j<2;j++)
        printf("%d %d %d %d   ",a[i][j],p[i][j],*(*(a+i)+j),*(*(p+i)+j));
        puts("");//输出一行之后再换行
  }
  return 0;
}