二维数组转置问题?
#include <stdio.h>int main()
{void move(int *pointer);
int a[3][3],*p,i;
printf("input matrix:\n");
for (i=0;i<3;i++)
scanf("%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
p=&a[0][0];
move(p);
printf("Now,matrix:\n");
for (i=0;i<3;i++)
printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);
return 0;
}
void move(int *pointer)
{int i,j,t;
for (i=0;i<3;i++)
for (j=i;j<3;j++)
{t=*(pointer+3*i+j); 这里的*(pointer+3*i+j)为什么在括号外只有一个*,二维数组的取值的形式应该是*(*(p+i)+j)?哪位大神解释一下函数中这个互换的到底是什么?
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
}
}