Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
4 / 4 / 1
Регистрация: 17.09.2017
Сообщений: 359

Можно ли объявлять массив с размером, заданным переменной?

03.04.2018, 12:00. Показов 2458. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
если нельзя то почему в код блоке это работает? и как тут выделяется память?

C++
1
2
3
4
5
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++)
      cin>>a[i];
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.04.2018, 12:00
Ответы с готовыми решениями:

С какого стандарта в C++ динамический массив можно объявлять как статический?
Здравствуйте. С какого стандарта в C++ динамический массив можно объявлять, как статический? Т.е. вот так: cin &gt;&gt; n; int b;

Заполнить двумерный массив размером 7х7 заданным образом
Помогите заполнить двумерный массив размером 7х7 следующим образом?

Нельзя объявлять тип переменной в передаче по ссылке
Здравствуйте. Есть такой код int.TryParse(myStringValue, out int myIntValue); В вижал студии 2017 он работает.

26
47 / 31 / 21
Регистрация: 04.04.2016
Сообщений: 209
04.04.2018, 18:21
Студворк — интернет-сервис помощи студентам
выделять можно, если переменная типа const
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
04.04.2018, 18:31
Цитата Сообщение от Александрррррпд Посмотреть сообщение
то есть я могу спокойно дальше так выделять память и норм?(через стек)
Да, если понемногу и не пугает привязка к компилятору (поддерживаться будет не везде).
Цитата Сообщение от Avaddon74 Посмотреть сообщение
int *a = new int[n]; // неужели так сложнее? вместо int a[n];
Да, сложнее, потому что теперь еще нужно куда-то воткнуть delete. Да, через std::vector<int> тоже сложнее. Короче, стандартное обсуждение:
А вот в Си есть полезная фиговина X! Удобна потому-то и посему-то!
Ну и че, в C++ тоже... Эм, тормозит зараза... Коду больше... Короче, у вас сегодня нет потребности в фиговине X. Вот как в C++33 завезут, так потребность и появится.
0
 Аватар для palva
4278 / 2970 / 693
Регистрация: 08.06.2007
Сообщений: 9,932
Записей в блоге: 5
04.04.2018, 18:32
Цитата Сообщение от Pink_Pank Посмотреть сообщение
выделять можно, если переменная типа const
шутить изволите.
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8217 / 5048 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
04.04.2018, 20:32
Цитата Сообщение от Александрррррпд Посмотреть сообщение
в чём преимущество первого и второго?
Разные инструменты под разные задачи. Чем отвёртка лучше молотка?

Добавлено через 42 секунды
Цитата Сообщение от rat0r Посмотреть сообщение
Что значит "через alloca"?
https://msdn.microsoft.com/library/wb1s57t5.aspx или схожая
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
04.04.2018, 23:22
Цитата Сообщение от MrGluck Посмотреть сообщение
https://msdn.microsoft.com/library/wb1s57t5.aspx или схожая
Я в курсе, что такое alloca.

Вопрос про то, откуда такое представление, что VLA "выделяются" "через alloca". Это же не реальная функция, которая вызывается, так, что можно найти её вызовы в функциях с VLA.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
04.04.2018, 23:45
Цитата Сообщение от Александрррррпд Посмотреть сообщение
что я выделю память через new что я выделю память в стеки
Разница в том что память на стеке высвобождается строго в порядке обратном выделению, в отличии от произвольного порядка высвобождения кучи.
Цитата Сообщение от Александрррррпд Посмотреть сообщение
и как тут выделяется память?
Поскольку в самом блоке размер массива не меняется, то возможно распредлелять его на стеке.

Добавлено через 11 минут
Но опять же это во первых фишка какого то конкретного компилятора (насколько помню Dev-C++).
А в главных ничего не бывает бесплатным. Смещения относительно начала кадра стека для всех переменных объявляемых после такого массива требуют динамического пересчета в рантайме, в отличии от статических смещений рассчитанных в компайлтайме когда такой фишки нет.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
04.04.2018, 23:51
Лучший ответ Сообщение было отмечено Александрррррпд как решение

Решение

Имхо, вывод прост. Если эта штука поддерживается не всеми компиляторами (причем не только старинными, но и новейшими), да еще обсуждается в самых высоких кругах ее нужность/ненужность - ну ее на фиг! Жили без нее, и дальше проживем. А искать на свою голову приключений... Хотя, конечно, мир не без романтиков...
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.04.2018, 23:51

задан массив размером 16. Сформировать из него массив размером 4x4 по строкам.
задан массив размером 16.Сформировать из него массив размером 4x4 по строкам. и второй макрос. заданы координаты вершин трех...

Можно ли в классе создавать массив переменной длинны. Например динамический массив?
Динамические массивы привлекают больше. :)

Обязательно ли объявлять переменную для хранения адреса переменной как указатель?
// Указатели #include &lt;iostream&gt; using namespace std; int Variable; int *pVariable; // int pVariable; int main() ...

Можно ли коробку размером a b c упаковать в посылку размером r s t? «Углом» укладывать нельзя
Можно ли коробку размером abc упаковать в посылку размером rst? «Углом» укладывать нельзя.

Можно ли объявлять объекты в заголовочном файле?
Решил написать змейку с использование OpenGL. Сначала написал все в одном файле, все работало, решил сделать по красивее и распихать по...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru