Разница между этими двумя объявлениями динамических массивов объектов типа test? - PullRequest
0 голосов
/ 10 ноября 2019

Почему указатель ptr позволяет нам получить доступ к его функции-члену через оператор точки ., а pt - нет, поскольку для этого требуется оператор косвенного обращения ->?

int n = 5;
test* ptr = new test[n];
ptr[1].print();
test* pt[45];
pt[1] = new test(2,3);
pt[1]->print();

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

Поскольку это разные вещи.

ptr - указатель типа test*, он указывает на 1-й элемент массива test[n], элементы которого имеют тип test,затем ptr[1] дает второй элемент с типом test.

pt - это массив, элементы которого имеют тип test*, затем pt[1] дает второй элемент с типом test*.

0 голосов
/ 10 ноября 2019

потому что ptr - это массив, а ptr[1] уже разыменовал указатель. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Тогда пока разыменовывается

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...