Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
FFPowerMan
346 / 239 / 103
Регистрация: 11.10.2018
Сообщений: 1,627
1

С какого стандарта в C++ динамический массив можно объявлять как статический?

17.08.2019, 14:28. Просмотров 388. Ответов 6

Здравствуйте. С какого стандарта в C++ динамический массив можно объявлять, как статический? Т.е. вот так:
C++
1
2
cin >> n;
int b[n];
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.08.2019, 14:28
Ответы с готовыми решениями:

Можно ли заменить динамический массив на статический в реализации списка, и если да, то как?
Есть программа с реализованным списком через динамический массив. Много ли нужно будет в ней...

Как объявлять двумерный динамический массив
Доброго времени суток. При выделении памяти для динамического двумерного массива с разным...

Как перевести статический массив в динамический?
Есть статический массив типа char,подскажите как перевести его в динамический и как потом изменять...

Динамический и статический массив
Подскажите, в чем разница. Имеется статический массив, который просто задается: long mas = { 0 };...

Нужно создать статический массив строк как статический массив указателей на строки. Условние ниже -->
Слова английского текста рассортировать по возрастанию количества заданной буквы в слове. Слова с...

6
oleg-m1973
1729 / 1209 / 484
Регистрация: 07.05.2019
Сообщений: 3,894
Записей в блоге: 1
17.08.2019, 14:35 2
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Здравствуйте. С какого стандарта в C++ динамический массив можно объявлять, как статический? Т.е. вот так:
В С99 можно было, в остальных - нельзя.
0
Renji
2575 / 1767 / 529
Регистрация: 05.06.2014
Сообщений: 5,133
17.08.2019, 16:33 3
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Здравствуйте. С какого стандарта в C++ динамический массив можно объявлять, как статический? Т.е. вот так:
Это называется VLA, в C++ поддерживается только как расширение компилятора.
1
FFPowerMan
346 / 239 / 103
Регистрация: 11.10.2018
Сообщений: 1,627
17.08.2019, 18:18  [ТС] 4
Т.е. он внутри работает также, как и раньше?
C++
1
2
3
int* K = new int[4];
//...
delete K;
0
Renji
2575 / 1767 / 529
Регистрация: 05.06.2014
Сообщений: 5,133
17.08.2019, 18:21 5
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Т.е. он внутри работает также, как и раньше?
Нет, он жрет стек. Соответственно, VLA надо пользоваться аккуратно, так как стек все же имеет размеры порядка мегабайта на все про все. Однако, за эту аккуратность вы получаете более быстрое выделение памяти под массив чем через new.
1
SomniPhobia
463 / 315 / 116
Регистрация: 22.11.2017
Сообщений: 819
17.08.2019, 20:48 6
FFPowerMan, привет!
Объявление массива
Croessmah, спасибо за разъяснение.
0
Evg
Эксперт CАвтор FAQ
21085 / 8102 / 627
Регистрация: 30.03.2009
Сообщений: 22,435
Записей в блоге: 30
18.08.2019, 20:19 7

Не по теме:

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
В С99 можно было, в остальных - нельзя
Всё-таки более правильным будет "В C99 и выше можно", в остальных (а среди остальных остаётся только C89) - нельзя. Но это несколько не в тему, т.к. речь идёт о Си++



Цитата Сообщение от FFPowerMan Посмотреть сообщение
Т.е. он внутри работает также, как и раньше?
Для VLA память освобождается автоматически по достижении закрывающей фигурной скобки того лексического блока, в котором расположен VLA. Т.е. это несколько другая конструкция. К тому же VLA размещаются в стеке, о чём коллега упоминал уже в посте #5. И если вдруг выяснится, что в стеке места не достаточно, то это и проконтролировать никак нельзя. Тут уже будет работать в зависимости от реализации: либо упадёт в месте объявления массива, либо программа молча продолжит работать дальше и где-нибудь как-нибудь упадёт при попытке обращения к массиву. Скорее всего из-за такого неконтролируемого поведения его и не стали включать в стандарт C++
0
18.08.2019, 20:19
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.08.2019, 20:19

создать статический массив строк как статический массив указателей на строки, задание ниже -->
Слова английского текста, начинающиеся с гласных букв, рассортировать в алфавитном порядке по...

Переделать статический массив в динамический
Помогите переделать статический массив в динамический #include <stdio.h> #include <conio.h>...

Переделать статический массив в динамический
Помогите переделать статический массив в динамический. #include <iostream> #include <cstdlib>...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.