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