迭代2D矩阵,用柱面指针

iterate 2d matrix with pointers columnwise

本文关键字:柱面 指针 2D 矩阵 迭代      更新时间:2023-10-16

我正在尝试编写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;
        }
      }

您应该加上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;
    }
}