方法很多。
看前面都有答了。
就写个指针的方法:
用指向指针的指针来实现倒置后的二维数组。
倒置后原数组不变。
#include <stdio.h>
#include <malloc.h>
#define ROW 2
#define CLO 3
int **fzz(int a[][CLO]);
void printfARR(int **arr);
int main()
{
int i,j,arr[ROW][CLO]={{1,2,3},{4,5,6}},**p=fzz(arr);
printf("原数组:\n");
for(i=0;i<ROW;i++,printf("\n"))
for(j=0;j<CLO;j++)
printf("%d ",arr[i][j]);
printf("倒置后的数组:\n");
for(i=0;i<CLO;i++,printf("\n"))
for(j=0;j<ROW;j++)
printf("%d ",p[i][j]);
return 0;
}
void printfARR(int **arr)
{
int i,j;
for(i=0;i<ROW;i++,printf("\n"))
for(j=0;j<CLO;j++)
printf("%d ",arr[i][j]);
}
int **fzz(int arr[][CLO])
{
int i,j,**arr2=(int **)malloc(sizeof(int *)*CLO);
if(!arr2)
return NULL;
for(i=0;i<CLO;i++)
{
arr2[i]=(int *)malloc(sizeof(int)*ROW);
if(!arr2[i])
return NULL;
for(j=0;j<ROW;j++)
arr2[i][j]=arr[j][i];
}
return arr2;
}