使用指针算法循环动态分配的2d数组

时间:2015-09-25 03:03:00

标签: c++ arrays pointers multidimensional-array pointer-arithmetic

我有一个动态分配的2d数组,并希望用指针算法循环它,因为我不知道运行前的行数和列数。

我知道如何使用1d数组执行此操作:

int *arr = new int[size];

并循环播放:

for (int *i = arr; i < arr + arr.size(); i++){
    *i = 20; //sets all elements to 20
}

但是,它在2d级别被卡住了。 这是我到目前为止所做的:

int **arr = new int *[row];
for(int i = 0; i<row; i++)
    arr[i] = new int[col];

循环遍历所有值:

for(int **i=arr; i < arr + row; i++){
    for(int *j=*i; j < j + col; j++){
        *j = 20; // set all values to 20
    }
}

第二个循环显然是不正确的,我只是不知道还有什么可以尝试。

1 个答案:

答案 0 :(得分:2)

您应该像j那样对i做同样的事情。

for(int **i=arr; i < arr + row; i++){
    for(int *j=*i; j < *i + col; j++){
        *j = 20; // set all values to 20
    }
}