这会产生一系列指针吗?

问题描述 投票:-1回答:2

所以我正在尝试制作一个动态分配的数组。要做到这一点,我正在尝试制作一个指针数组。我使用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];

现在给我一系列指针。

c++ arrays dynamic-memory-allocation
2个回答
0
投票

第一点是不要将指针数组与指向数组的指针混淆。你说的是第一个,所以我会接受你的话。但如果你真的意味着第二个,那么接下来就会产生误导。

一般来说,要创建一个动态的T数组

T* arr = new T[size];

因为你想要一个指针数组,所以T必须是一个指针。例如,这里是如何创建一个整数指针数组。

int** arr = new int*[size];

类似地,emprec的指针数组也是如此

emprec** arr = new emprec*[size];

这可以使用你问题中的typedef来简化

emprecptr* arr = new emprecptr[size];

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简化了对代码的理解,并且可能使其更易于阅读。

© www.soinside.com 2019 - 2024. All rights reserved.