为什么我们在 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];
}
}
二维矩阵大致就是一个一维矩阵,其元素是基本元素的一维矩阵,因此是数组的数组。对吗?
那么如果你想动态分配它,你有:
- 元素的类型,例如
int
、
- 存储元素动态数组的类型,然后
int *
,指向int的指针;有多少,比如说 cols
,
- 存储一维数组的动态数组的类型,然后是
int **
,指向int的指针,有多少,比如rows
。
然后您需要在 (3) 处进行循环,因为您需要独立分配每个大小为 cols
的一维数组...您有 rows
行,每个行的大小为 cols
.
谁能解释为什么我们在 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];
}
}
二维矩阵大致就是一个一维矩阵,其元素是基本元素的一维矩阵,因此是数组的数组。对吗?
那么如果你想动态分配它,你有:
- 元素的类型,例如
int
、 - 存储元素动态数组的类型,然后
int *
,指向int的指针;有多少,比如说cols
, - 存储一维数组的动态数组的类型,然后是
int **
,指向int的指针,有多少,比如rows
。
然后您需要在 (3) 处进行循环,因为您需要独立分配每个大小为 cols
的一维数组...您有 rows
行,每个行的大小为 cols
.