繁体   English   中英

为什么我们在 C++ 中声明动态二维数组时使用指向指针的指针?

[英]Why do we use pointers to pointers while declaring dynamic 2d array in c++?

谁能解释为什么我们在 C++ 中声明动态二维数组时使用指向指针 (**) 的指针? 我不明白为什么我们使用循环。

using namespace std;

int main(){

    int **matrixPtr;//2d array declaretion
    cout << "enter no of rows: ";
    int row;//defining row
    cin >> row;//initializing value of row from user
    cout << "enter no of columns : ";
    int col;//defining column
    cin >> col;//initializing value of column from users
    matrixPtr = new int *[row];//allocating 2d array dynamically
    for(int i=0;i<row;i++){
       matrixPtr[i] = new int[col];
    }
}

粗略地说,二维矩阵只是一个一维矩阵,其元素是一维基本元素矩阵,因此是一个数组数组。 对?

然后,如果你想动态分配它,你有:

  1. 元素的类型,比如int
  2. 用于存储元素的动态数组的类型,然后是int * ,指向 int 的指针; 有多少,说cols
  3. 用于存储一维数组的动态数组的类型,然后是int ** ,指向int **指针的指针,有多少,比如rows

然后,你需要在(3)循环,因为你需要独立地分配大小各一维数组cols ......你rows的行大小的每一个cols

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM