【问题标题】:Looping a dynamically allocated 2d array with pointer arithmetic使用指针算法循环动态分配的二维数组
【发布时间】:2015-09-25 03:03:00
【问题描述】:

我有一个动态分配的二维数组,我想用指针算法循环它,因为在运行前我不知道行数和列数。

我知道如何使用一维数组来做到这一点:

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

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

【问题讨论】:

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


    【解决方案1】:

    你应该对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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2016-08-06
      • 2013-03-07
      • 2016-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多