如何给指针new一个二维数组空间
时间: 2023-07-20 18:03:55 浏览: 67
可以使用如下语法给指针new一个二维数组空间:
```c++
int rows = 3;
int cols = 4;
int **p = new int*[rows]; // 先创建指向指针行数组的指针
for(int i = 0; i < rows; i++){
p[i] = new int[cols]; // 再为每一行创建指向int类型的指针
}
```
这样就创建了一个3行4列的二维数组,其中`p`是一个指向int类型指针数组的指针,`p[i]`是指向int类型的指针,可以通过`p[i][j]`来访问二维数组中的元素。在使用完二维数组后,需要手动释放空间:
```c++
for(int i = 0; i < rows; i++){
delete[] p[i];
}
delete[] p;
```
相关问题
如何给任意一个指针new一个二维数组空间
可以使用以下语法给任意一个指针new一个二维数组空间:
```
int rows = 3;
int cols = 4;
int** arr = new int*[rows];
for(int i = 0; i < rows; i++){
arr[i] = new int[cols];
}
```
其中,`arr`是指向二维数组的指针,`rows`和`cols`是数组的行数和列数。首先,创建一个指针数组,指向二维数组的每一行,然后对于每一行,再创建一个一维数组,指向该行的所有元素。这样就成功地在堆上分配了一个二维数组的空间。使用完毕后,需要记得释放所有的内存空间:
```
for(int i = 0; i < rows; i++){
delete[] arr[i];
}
delete[] arr;
```
c++ 用指针定义一个二维数组
可以使用指向指针的指针来定义一个二维数组,示例代码如下:
```c++
int rows = 3;
int cols = 4;
// 动态分配内存
int **arr = new int*[rows];
for (int i = 0; i < rows; i++) {
arr[i] = new int[cols];
}
// 赋值
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
arr[i][j] = i * j;
}
}
// 访问
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
// 释放内存
for (int i = 0; i < rows; i++) {
delete[] arr[i];
}
delete[] arr;
```
在这个示例中,我们首先使用 `new` 运算符动态分配了一个指向指针的指针 `arr`,然后在循环中为每个指针分配了一个 `cols` 大小的数组。可以将 `arr` 看作是一个长度为 `rows` 的一维数组,每个元素都是一个指向长度为 `cols` 的一维数组的指针。要访问数组元素时,我们可以使用 `arr[i][j]` 的形式进行访问。最后,我们需要释放动态分配的内存,以免造成内存泄漏。