如何创建指针数组?

chu*_*tar 38 c++ arrays pointers

我正在尝试创建一个指针数组.这些指针将指向我创建的Student对象.我该怎么做?我现在拥有的是:

Student * db = new Student[5];
Run Code Online (Sandbox Code Playgroud)

但是该数组中的每个元素都是学生对象,而不是指向学生对象的指针.谢谢.

Meh*_*ari 80

Student** db = new Student*[5];
// To allocate it statically:
Student* db[5];
Run Code Online (Sandbox Code Playgroud)

  • 当您希望从函数返回数组时,需要在堆上分配数组.如果它在堆栈上分配,则会立即销毁该函数的范围. (2认同)

小智 17

#include <vector>
std::vector <Student *> db(5);
// in use
db[2] = & someStudent;
Run Code Online (Sandbox Code Playgroud)

这样做的好处是您不必担心删除已分配的存储 - 向量会为您执行此操作.

  • 向量将_not_自动删除已分配的存储,它将释放_pointers_的存储空间,但不释放指针指向的内存.使用boost :: ptr_vector. (6认同)

ypn*_*nos 11

指针数组被写为指针指针:

Student **db = new Student*[5];
Run Code Online (Sandbox Code Playgroud)

现在的问题是,你只为五个指针保留了内存.因此,您必须遍历它们以自己创建Student对象.

在C++中,对于大多数用例,使用std :: vector生活更容易.

std::vector<Student*> db;
Run Code Online (Sandbox Code Playgroud)

现在你可以使用push_back()来添加新的指针,并使用[]来索引它.使用比**更清洁.