Я просто должен ответить, поскольку вы, похоже, упускаете некоторые важные основы. Либо инструктор должен быть уволен, либо вы не уделяли достаточного внимания в классе. Итак ...
ptr1 = *allocIntArray(100);
Вы не могли вставить вставленный код, ptr1 не объявлен.
Вы должны понимать, что делает оператор *
. Любое значение справа от *
должно быть pointer
. Что такое указатель, должно быть основополагающим в вашем понимании. Если у вас было:
int* ptr1 = *allocIntArray(100);
Вы должны были получить ошибку компилятора, поэтому вы должны иметь:
int ptr1;
Где-то вдоль линии. Поскольку allocIntArray(...)
возвращает указатель, то *allocIntArray(...)
дает вам целое число.
Вы бы хотели:
int* ptr1 = allocIntArray(100);
Чтобы получить указатель на новый массив. Тогда вы:
std::cout << ptr1 << std::endl;
Итак, что такое ptr1? Если это указатель, то все, что вы делаете, это печатаете значение указателя. В соответствии с вашей заявленной проблемой я бы сказал, что ptr1 на самом деле является указателем. std::cout
не имеет возможности работать с указателем, как вы ожидаете. При этом он не сможет определить размер вашего массива.
Вы бы хотели (и мне больно писать так):
for(size_t i= 0; i < 100; ++i)
std::cout << ptr1[i] <<" ";
Но !!!
4) Распечатать новый массив.
Так что это будет печатать? Там никогда не было инструкции для инициализации массива. Он будет распечатывать то, что мусор когда-либо сидел в массиве, когда он был создан.
Заметьте, что инструктор заставляет вас делать:
using namespace std;
Много говорит, так как он / она никогда не должен был этого допустить.