用列指针迭代2d矩阵

时间:2014-01-19 16:04:07

标签: c++ pointers matrix

我正在尝试编写2个使用指针迭代am * n矩阵的函数,以便逐个元素地交换行和列。当涉及到另一个时,交换行的函数已经很好了,我可以'似乎想通了。当我尝试交换第3列和第2列时,输出为矩阵

     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;
        }
      }

1 个答案:

答案 0 :(得分:0)

你应该加上c1和c2而不是减去。

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;
    }
}