创建动态多维数组
creating dynamic multidimensional arrays
我是一个完全的编程初学者,我在下面的代码中有一个问题,它是关于创建一个动态多维数组我不明白p的原因在这里
它的作用是什么#include <iostream>
using namespace std;
void print2DArr(int** arp,int *ss,int nrows)
{
for(int i=0;i<nrows;i++){
for(int j=0;j<ss[i];j++){
cout << arp[i][j] <<" ";
}
cout << endl;
}
}
void main()
{
int count;
cout << "How many arrays you have?n";
cin >> count;
int **arrs = new int*[count];
int *sizes = new int[count];
//int *arrs[3];//static array of pointers
for(int i=0;i<count;i++)
{
int size;
cout << "Enter size of array " << (i+1) << endl;
cin >> size;
sizes[i]=size;
int *p = new int[size];
arrs[i] = p;
//arrs[i] = new int[size];
cout << "Enter " << size << " valuesn";
for(int j=0;j<size;j++)
//cin >> p[j];
cin >> arrs[i][j];
}
print2DArr(arrs,sizes,count);
//delete (dynamic de-allocation)
for(int i=0;i<count;i++)
delete[] arrs[i];
delete[] arrs;
}
它是变量,不会做很多事情。您可以替换线条
int *p = new int[size];
arrs[i] = p;
跟
arrs[i] = new int[size];
没有任何问题。
您正在 for 循环中创建一个动态大小的 int 数组。 p 指向新创建的 int 数组。然后,您可以将 p(新 int 数组的地址)分配给指向 int 数组的指针数组的第 i 个位置(这就是下一条语句的作用:arrs[i]=p
)。
因此,您的结构如下所示:
arrs(指向 int 数组的指针数组):
- arrs0:指向地址 4711
处的整数数组 1- ARRS1:指向地址 9876
处的 int 数组 2
大小(int 数组) - 保存 int 数组的大小(而不是指向 int 数组的指针数组!
- 0:2
- 1:3
整数阵列 1 (ADR 4711)
- 0:17
- 1:23
整数阵列 2 (ADR 9876)
相关文章:
- std::向量与传递值的动态数组
- 将数组动态分配到具有指针参数的函数中
- 我可以以某种方式使我的矢量/数组动态更改装置数量吗?
- 使用 new: "potentially uninitialized pointer"将对象数组动态分配给指针
- 为什么C 没有方便的方式来为多维数组动态分配内存
- 如何制作具有动态大小的数组?动态数组的一般用法(可能还有指针)
- c++中的数组动态内存分配
- 多维数组动态分配的内存图
- 如何在 c++ 中使用 2-D 固定数组为 4-D 数组动态分配内存
- C++ 我在数组/动态内存方面遇到了一些问题
- C++ 中从数组动态强制转换
- C++中高维数组动态内存分配的正确方法.
- 从 C++ 结构中包含的指针数组动态分配和访问内存
- 对象数组动态内存分配
- 为二维数组动态分配内存时出错
- 如何将2d数组动态分配给结构
- 为结构数组c++动态分配内存
- 将数组动态添加到多维数组
- 类中的类数组-动态数组(c++)有问题
- 分配对象数组动态冻结