chustar
chustar

Reputation: 12455

How do I create an array of pointers?

I am trying to create an array of pointers. These pointers will point to a Student object that I created. How do I do it? What I have now is:

Student * db = new Student[5];

But each element in that array is the student object, not a pointer to the student object. Thanks.

Upvotes: 58

Views: 122739

Answers (4)

user9546648
user9546648

Reputation: 1

    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
}

Upvotes: -6

anon
anon

Reputation:

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

The advantage of this is that you don't have to worry about deleting the allocated storage - the vector does it for you.

Upvotes: 20

Mehrdad Afshari
Mehrdad Afshari

Reputation: 421978

Student** db = new Student*[5];
// To allocate it statically:
Student* db[5];

Upvotes: 107

ypnos
ypnos

Reputation: 52337

An array of pointers is written as a pointer of pointers:

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

Now the problem is, that you only have reserved memory for the five pointers. So you have to iterate through them to create the Student objects themselves.

In C++, for most use cases life is easier with a std::vector.

std::vector<Student*> db;

Now you can use push_back() to add new pointers to it and [] to index it. It is cleaner to use than the ** thing.

Upvotes: 12

Related Questions