#include"stdio.h"
main()
{ int *p,a[3][3],i,j;
p=&a[0][0];//此处类型不一致
printf("9ge shu : \n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",(p+3*i+j));//scanf里面不要有空格,根据上面的该法,p代表a[0][0]的地址,此处(p+3*i+j)就是地址了,不用*
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d ",*(p+3*i+j));
}
#include"stdio.h"
main()
{ int *p,a[3][3],i,j;
//p=a;
printf("9 ge shu : \n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",*(a+i)+j);//如果非要用*(a+i)+j)这种格式,此处不能用p要用a,表示二维数组第一行的首地址
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d ",*(*(a+i)+j));
}
//注:用int (*p)[3];即定义一个指向一个有三个元素的一维数组的指针也能实现,*(p+i)+j)这种格式,此时三维数组可以看成三个一位数组
#include"stdio.h"
main()
{ int (*p)[3],a[3][3],i,j;
p=a;
printf("9 ge shu : \n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",*(a+i)+j);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d ",*(*(a+i)+j));
}