0
我正在嘗試編寫2個函數,它們使用一個指針來迭代am * n矩陣,以便按元素交換行和列元素。交換行的函數出現的很好另我似乎不能推測它out.The輸出,當我嘗試交換柱3和圖2,對一個矩陣用指針逐列迭代2d矩陣
1 2 3
1 2 3
1 2 3
是:
1 3 2
1 3 2
1 2 3
任何建議將是非常這裏是他們兩人的代碼:
void interchange_rows(int *p,int n,int r1,int r2){
int temp;
for(int i=0;i<n;i++){
temp=*(p+r1*n+i);
*(p+r1*n+i)=*(p+r2*n+i);
*(p+r2*n+i)=temp;
}
}
void interchange_columns(int *p,int n, int c1,int c2){
int temp;
for(int i=0;i<n;i++){
temp=*(p+(i*n)-c1);
*(p+(i*n)-c1)=*(p+(i*n)-c2);
*(p+(i*n)-c2)=temp;
}
}
,當我嘗試換3和1,但是當我嘗試換3和2你是如何初始化矩陣,你是如何調用該函數它給了我一個錯誤 – Georgiana
的作品?請粘貼代碼。 interchange_columns((int *)a,3,2,1)在這裏效果很好,a定義爲[3] [3] = {{1,2,3},{1,2,3},{1, 2,3}} –
'interchange_columns(arr,dim,c1,c2)'其中arr是指向動態分配數組的指針,dim-是維度(它是一個方形矩陣),c1和c2是給定的列由用戶。還有一個先決條件:if((c1 <= dim)&&(c2 <= row)&&(c1> = 0)&&(c2> = 0))''。它適用於交換列1和2以及2和3,但它是:當檢測到1和3時出現「檢測到堆損壞」。 – Georgiana