所以我正在尝试制作一个动态分配的数组。为此,我正在尝试制作一个指针数组。我使用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];
现在给我一个指针数组。
答案 0 :(得分:0)
首先要注意的是不要将指针数组与指向该数组的 pointer混淆。你是第一个说的,所以我将按你的话。但是,如果您真的是第二个意思,那么以下内容将产生误导。
一般来说,要创建一个T
的动态数组,
T* arr = new T[size];
因为您想要一个指针数组T
必须是一个指针。例如,这里是如何创建整数指针数组。
int** arr = new int*[size];
类似地,指向emprec
的指针数组将是
emprec** arr = new emprec*[size];
使用您问题中的typedef可以简化
emprecptr* arr = new emprecptr[size];
答案 1 :(得分:0)
给予
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
简化了对代码的理解,并且有可能使其更易于阅读。