{
int a[3][3]={1,2,3,4,5,6,7,8,9};
int *p,i;
p=&a[0][0];
move(p);
for(i=0;i<3;i++)
printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);
}
move(int *pointer)
{
int i,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{
t=*(pointer+3*i+j); //我这里看不明白。当开始第二个循环体时当j=1时,岂不是交换*(pointer+1)与*(pointer+3)
*(pointer+3*i+j)=*(pointer+3*j+i); //那这个*(pointer+3)是哪个元素?怎么用种方式表示
*(pointer+3*j+i)=t; //根据指向二维数组的指针*(pointer+i)+j表示的是指向第i行第j列的地址,那上面的*(pointer+3)岂
} //不是指向第三行第零列的地址?就是这里很模糊,请指教。THX~~
}