У меня был урок информатики в школе, и наш учитель говорил о динамическом распределении памяти и почему
cin>>size;
int array[size]; // According to him this should result in a compiler error
этот не должен работать и вместо этого мы должны были использовать:
int *p, size;
cin>>size;
p = new int[size]
...
delete[] p;
Мой вопрос: почему первый пример работает, если вы не можете объявить динамически подобные массивы?
ОБНОВИТЬ: Все тесты сделаны в Компилятор GNU GCC и код выше находится внутри главный функция
Вы используете нестандартный компилятор, который поддерживает массивы переменной длины. Ваш профессор прав, int array[size]
не должен компилироваться.
Ваш профессор также неправильно говорю вам использовать p = new int[size]
, Что он должен сделать, это сказать вам, чтобы использовать std::vector<int> p(size)
, (хорошо, в образовательных целях это нормально) 🙂
Других решений пока нет …