【发布时间】:2019-02-15 22:31:35
【问题描述】:
所以我正在尝试创建一个动态分配的数组。为此,我正在尝试创建一个指针数组。我使用 typedef 定义指针类型并尝试使用此代码创建指针数组。
emprec * arrptr = new emprec[size];
我的问题是,这是创建指针数组的正确方法吗?如果没有,有什么更好的方法。
emprec 在程序中定义如下
struct emprec
{
int id;
float salary;
};
typedef emprec * emprecptr;
typedef emprec arr[MAXDBSIZE];
(我是一名学生,正在努力学习更多关于动态分配的知识)
在你们的帮助之后,很明显我最初制作了一个 emprec 数组,它是一个结构数组。我不想那样。将代码更改为
emprecptr* DBarray = new emprecptr[dbsize];
现在给我一个指针数组。
【问题讨论】:
-
这真的取决于
emprec是什么。如果emprec是一个指针,那么你有一个指针数组,如果不是,那么你没有,你有一个emprec数组。 -
您可能不应该拥有原始指针的动态数组。取而代之的是
std::vector<std::unique_ptr<emprec>> -
你有一个 emprec 数组,不管它们是什么。
-
“我使用 typedef 来定义指针类型”不要那样做!不要在 typedef 中隐藏指针类型。此外,您应该首先学习现代 C++ 习语。然后,在您对此感到满意之后,如果您想深入了解实现的细节,当然,请选择指针和手动内存管理。或者改为学习 C。
标签: c++ arrays dynamic-memory-allocation