Как мне создать массив указателей? - PullRequest
37 голосов
/ 07 марта 2009

Я пытаюсь создать массив указателей. Эти указатели будут указывать на объект Student, который я создал. Как мне это сделать? Теперь у меня есть:

Student * db = new Student[5];

Но каждый элемент в этом массиве является объектом ученика, а не указателем на объект ученика. Спасибо.

Ответы [ 4 ]

78 голосов
/ 07 марта 2009
Student** db = new Student*[5];
// To allocate it statically:
Student* db[5];
17 голосов
/ 07 марта 2009
#include <vector>
std::vector <Student *> db(5);
// in use
db[2] = & someStudent;

Преимущество этого в том, что вам не нужно беспокоиться об удалении выделенного хранилища - вектор сделает это за вас.

11 голосов
/ 07 марта 2009

Массив указателей записывается как указатель указателей:

Student **db = new Student*[5];

Теперь проблема в том, что вы зарезервировали память только для пяти указателей. Таким образом, вы должны перебирать их, чтобы сами создавать объекты Student.

В C ++ для большинства случаев использования жизнь проще с помощью std :: vector.

std::vector<Student*> db;

Теперь вы можете использовать push_back () для добавления новых указателей на него и [] для его индексации. Чище использовать, чем ** вещь.

0 голосов
/ 25 марта 2018
    void main()
    {
    int *arr;
    int size;
    cout<<"Enter the size of the integer array:";
    cin>>size;
    cout<<"Creating an array of size<<size<<"\n";
        arr=new int[size];
    cout<<"Dynamic allocation of memory for memory for array arr is successful";
    delete arr;
    getch();enter code here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...