0

我有一個動態分配的二維數組,並希望通過指針算術循環它,因爲在運行時我不知道行數和列數。使用指針算術循環動態分配的二維數組

我知道如何與一維數組做到這一點:

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

第二個循環是顯然是不正確的,我只是不知道什麼嘗試。

回答

2

您應該像i一樣對j做同樣的事情。

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

男人!我很親密。 –