利用指针,数组转置,错哪了
利用指针,数组转置,哪里错了?
#include<stdio.h>//
int main()
{
void change(int(*p)[3]);
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},i,j;
printf("former array:\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%3d",a[i][j]);
printf("\n");
}
change(a);
printf("now array:\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}
return 0;
}
void change(int(*p)[3])
{
int i,j,temp;
for(i=0;i<3;i++)
for(i=0;j<3;j++)
if(i<=j)
{temp=*(*(p+i)+j);*(*(p+i)+j)=*(*(p+j)+i);*(*(p+j)+i)=temp;}
}
------解决方案--------------------
for(i=0;i<3;i++)
for(i=0;j<3;j++)//这里应该是 for(j=0;j<3;j++),你手误,写成 i了.
if(i<=j)
{temp=*(*(p+i)+j);*(*(p+i)+j)=*(*(p+j)+i);*(*(p+j)+i)=temp;}
#include<stdio.h>//
int main()
{
void change(int(*p)[3]);
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}},i,j;
printf("former array:\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%3d",a[i][j]);
printf("\n");
}
change(a);
printf("now array:\n");
for(i=0;i<3;i++){
for(j=0;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}
return 0;
}
void change(int(*p)[3])
{
int i,j,temp;
for(i=0;i<3;i++)
for(i=0;j<3;j++)
if(i<=j)
{temp=*(*(p+i)+j);*(*(p+i)+j)=*(*(p+j)+i);*(*(p+j)+i)=temp;}
}
------解决方案--------------------
for(i=0;i<3;i++)
for(i=0;j<3;j++)//这里应该是 for(j=0;j<3;j++),你手误,写成 i了.
if(i<=j)
{temp=*(*(p+i)+j);*(*(p+i)+j)=*(*(p+j)+i);*(*(p+j)+i)=temp;}