массиве, если можно указать в квадратных скобках переменную задающую размер и без него?
даже если значение этой переменной ввели с терминала/консоли
покажи пример создания так "динамического массива"
#include <iostream> int main() { int razmer; std::cin >> razmer; int mas[razmer]; mas[0] = 1; std::cout << mas[0]; return 0; }
Спорим, не скомпилируется?
у меня скомпилировалось на g++
Продемонстрируй на gcc.godbolt.org
Gcc расширяет язык, по стандарту размер массива должен быть известен во время компиляции. Отступление от стандарта выключается -pedantic-errors , кажется . Вам std::vector нужен , или new
в смысле продемонстрировать?
В прямом. Скомпилить и дать ссылку. А вообще - ответ сообщением выше :)
Не понимаю интерфейс этого сайта, мне показывает какой-то ассемблер когда я вставил код 🙂
Да это мне просто интересно стало зачем делать через new, если и так работает, вас понял что это отступление от стандарта наверное, буду в дальнейшем делать через new для безопасности
будут ещё после этого рассказывать про msvc... а тут вон гцц новичков как обманывает...
Ну знач скомпилилось:)
А вектор чем не нравится? Зачем себе работу создавать с выделением/освобождением?
Ну может и вектор, просто я вектор еще не учил, как изучу может буду делать через него
New полезно знать и понимать, но ручные операции с памятью провоцируют ошибки в коде и веселье с отладчиком. Прочитайте про идиому RAII, если еще не читали.
Спасибо почитаю 🙂
Потому что нельзя указывать.
Включи в GCC режим strict ANSI compatibility - и это не будет компилироваться
Дитя поди жизни не знает совсем, а ты — RAII !
Обсуждают сегодня