C语言:使用指针将二维数组转置

如题所述

1> 二维数组(可以看成一维数组)首尾倒置
2> 使用指针(2个p1,p2),指向一维数组头/尾,然后向尾/向头移动,直到中间位置(p1>=p2)停止移动

char myArray[5][10];
char *p1 = &(myArray[0][0]);
char *p2 = &(myArray[4][9]);
char temp;
while (p1 < p2)
{
temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-03-31
main()
{ int i,j, *d[10],M,N,temp;
for(i=0;i<10;i++)
d[i]=(int *)malloc(sizeof(int)*10);
scanf("%d %d",&N,&M);
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%d",&d[i][j]);
for(i=0;i<N;i++)
for(j=0; j<i; j++)
{ temp=d[i][j];
d[i][j]=d[j][i];
d[j][i]=temp; }
for(i=0;i<N;i++)
{ for(j=0;j<M;j++)
printf("%d ", d[i][j]);
printf("\n");
}
}
基本就是这个意思,但是没有编译运行,自己试试吧。本回答被提问者和网友采纳
第2个回答  2012-12-07
int a[10];
int b[10];
int *p;
p=a;
b=p;
这样?追问

你觉得呢

追答

好吧。我觉得也不行。
int a[10][10];
int b[10][10];
int *p;
int i,j;
for(i=0;i<10;i++)
{
p=a[i];

for(j=0;j<10;j++)

{
b[j][i]=p[j];

}
}

这样?