int main()
{void move(int* pointer);
int a[3][3],i,*p;
printf("input");
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:\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+i)+j);
((pointer+i)+j)=((pointer+j)+i);
((pointer+j)+i)=t;
}}}
int main()
{void move(int* pointer);
int a[3][3],i,*p;
printf("input");
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:\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+i)+j);
((pointer+i)+j)=((pointer+j)+i);//这两个地址是一样的,换来换去还是没得换;其次要交换的是指向的数据,应该解引用;
((pointer+j)+i)=t;
}}}
下面是修改之后的
#include<stdio.h>
void move(int* pointer,int row)
{
int i, j, t;
for (i = 0; i < 3; i++)
{
for (j = i; j < 3; j++)
{
if (i == j)
{
continue;
}
else
{
t = *(pointer +i*row+j) ;
*(pointer+i*row+j)= *(pointer+j*row+i);
*(pointer + j * row + i) = t;
}
}
}
}
int main()
{
int a[3][3], i, * p,row;
row = 3;//每行的数据个数
printf("input:\n");
for (i = 0; i < 3; i++)
scanf_s("%d %d %d", &a[i][0], &a[i][1], &a[i][2],4,4,4);
p = &a[0][0];
move(p,row);
printf("now:\n");
for (i = 0; i < 3; i++)
printf("%d %d %d\n", a[i][0], a[i][1], a[i][2]);
return 0;
}