指標轉置二維陣列
阿新 • • 發佈:2019-01-30
轉置實現二維陣列行列互換
第一種方法:比較簡單,用指向矩陣的陣列指標表示二維陣列
方法2:用p-a,達到取代i的效果#include <stdio.h> main() { int t,a[4][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6},{1,5,6,0}}; int (*p)[4],i,j; p=a; for (i=0;i<3;i++) for (j=i+1;j<4;j++) { t=p[i][j]; p[i][j]=p[j][i]; p[j][i]=t; } for (i=0;i<4;i++) { for (j=0;j<4;j++) printf("%d",p[i][j]); printf("\n"); } }
方法3:#include <stdio.h> main() { int t,a[4][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6},{1,5,6,0}}; int (*p)[4],i,j,x; p=a; for (p;p<a+4;p++) { x=p-a; for (j=x+1;j<4;j++) { t=a[x][j]; a[x][j]=a[j][x]; a[j][x]=t; } } for (i=0;i<4;i++) { for (j=0;j<4;j++) printf("%d",a[i][j]); printf("\n"); } }
#include <stdio.h> main() { int t,a[4][4]={{1,2,3,4},{2,3,4,5},{3,4,5,6},{1,5,6,0}}; int (*p)[4],i,j,x; p=a; for (p;p<a+4;p++) { x=p-a; //相當於i for (j=x+1;j<4;j++) { t=*(*p+j); //相當於t=a[i][j] *(*p+j)=*(*(a+j)+x); //相當於a[i][j]=a[j][i] *(*(a+j)+x)=t; } } for (i=0;i<4;i++) { for (j=0;j<4;j++) printf("%d",a[i][j]); printf("\n"); } }