Arrays 功能。2个2D数组,第二个数组充满了0';s、 应用条件后,将整行从第一个二维数组复制到第二个二维数组
例如,我有两个数组,一个是Arrays 功能。2个2D数组,第二个数组充满了0';s、 应用条件后,将整行从第一个二维数组复制到第二个二维数组,arrays,c,Arrays,C,例如,我有两个数组,一个是 0 -1 1 0 1 0 -1 0 0 0 0 1 1 -1 0 0 0 0 -1 0 0 -1 0 1 0 第二个满是0。 当我满足条件a[I][j]=-1&&a[I][k]==1后,其中k=j+1,我需要复制整行并将其放入第二个数组中,因此结果应该是: 0 -1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 我已经为两个数组分配了内存,下面是我尝试过的代码部分,但它不起作用,它复制了整个数组 void copy_
0 -1 1 0 1
0 -1 0 0 0
0 1 1 -1 0
0 0 0 -1 0
0 -1 0 1 0
第二个满是0。
当我满足条件a[I][j]=-1&&a[I][k]==1
后,其中k=j+1,我需要复制整行并将其放入第二个数组中,因此结果应该是:
0 -1 1 0 1
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 -1 0 1 0
我已经为两个数组分配了内存,下面是我尝试过的代码部分,但它不起作用,它复制了整个数组
void copy_row(int **a, int **b, int m){
for(int i=0; i<m; i++){
b[i]=a[i];
}
}
int main(){
...
for(int i=0 ; i<n ; i++){
for(int j=0 ; j<m ; j++){
for(int k=j+1; k<m ; k++){
if (a[i][j]==-1 && a[i][k]==1){
copy_row(a,b,n);
}
}
}
}
void copy\u行(int**a、int**b、int m){
对于(int i=0;i如果要复制行,需要将当前行的索引传递给copy\u row
,加上列数
来自main的电话可能是
// Notice that we pass index i and not n
copy_row(m, a, b, i);
复制行可以是:
void copy_row(int numOfColumns, int a[][numOfColumns], int b[][numOfColumns], int rowIndex) {
for (int ii = 0, ii < numOfColumns, ++ii) {
b[rowIndex][ii] = a[rowIndex][ii];
}
}
请说明如何分配,这些指向指针的指针非常可疑,通常2D数组和指向指针的指针不兼容(指向char
s的指针除外)。char**
和char*[]
可以互换,但int**
和int*[]
不是。@DavidRanieri谢谢你的评论,我编辑了答案。谢谢,也解决了这个问题。
for(int j = 0 ; j < m ; ++j) {
if (a[i][j] == -1) {
for(int k = j + 1; k < m ; ++k) {
if (a[i][k] == 1) {
copy_row(m, a, b, i);
break;
}
}
break;
}
}