所以我正在尝试制作一个动态分配的数组。要做到这一点,我正在尝试制作一个指针数组。我使用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];
现在给我一系列指针。
第一点是不要将指针数组与指向数组的指针混淆。你说的是第一个,所以我会接受你的话。但如果你真的意味着第二个,那么接下来就会产生误导。
一般来说,要创建一个动态的T
数组
T* arr = new T[size];
因为你想要一个指针数组,所以T
必须是一个指针。例如,这里是如何创建一个整数指针数组。
int** arr = new int*[size];
类似地,emprec
的指针数组也是如此
emprec** arr = new emprec*[size];
这可以使用你问题中的typedef来简化
emprecptr* arr = new emprecptr[size];
特定
struct emprec
{
int id;
float salary;
};
那就不要
emprec * arrptr = new emprec[size];
不是指针数组,而是emprec
的数组。但既然你也有typedef emprec * emprecptr;
,那么
emprecptr * arrptr = new emprecptr[size];
将是一个指针数组(对emprec
)。如果没有typedef
,你必须把它写成:
emprec* * arrptr = new emprec*[size];
但正如您所看到的,typedef
简化了对代码的理解,并且可能使其更易于阅读。