Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.76/263: Рейтинг темы: голосов - 263, средняя оценка - 4.76
 Аватар для pcmax
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274

В чем разница между динамическим массивом и статическим?

07.01.2019, 11:59. Показов 58009. Ответов 220
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
ребята, я не понимаю различия. вроде читал литературу.

ну вот говорят, что динамический массив, это массив выделение памяти под который будет происходит в процессе выполнения программы.

и тут я залез в онлайн компилятор (с++ 14) и сделал так
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main(){
 
int n;
std::cin >> n;
int array[n]; // ну я создал посути динамический массив.
 
int *arr;
arr=new int[n]; // здесь тоже. 
return 0;
}
 
значит они оба динамические?
объясните пожалуйста в чем действительно разница между статическим и динамическим массивом, чтобы я мог точно понимать что есть что
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.01.2019, 11:59
Ответы с готовыми решениями:

Разница между статическим и динамическим полиморфизмом
Добрый день Подскажите пожалуйста какая разница между статическим и динамическим полиморфизмом и пожалуйста на примере и virtual...

В чем разница между вектором и массивом
Я учу язык С/С++ и хотел у вас спросить в чем разница между вектором и массивом ? кроме тогдо что вектор создается vector<int> m; а...

В чем разница между обычным массивом и контейнером
В чем разница между обычным массивом и контейнером?

220
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
09.01.2019, 13:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Undisputed Посмотреть сообщение
В некоторых местах стандарта есть явное указание что "так не пишите, это UB". Получается что UB это то что стандарт не разрешает явно + то что явно отмечено в стандарте как UB
Ну зачем ты так превратно понимаешь?
Если я пишу "UB - это то, что не оговаривает спецификация языка", то разве смысл фразы "не оговаривает" меняется. если в спецификации будет прямо написано "я не оговариваю это". По-моему нет.
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
09.01.2019, 13:56
То есть наличие UB иногда документировано
Я об этом
0
09.01.2019, 13:59

Не по теме:

Бывает так, что человек ничего не говорит, а бывает, что он говорит "мне нечего сказать". Если я потом его процитирую как "он мне ничего не сказал", разве я совру при этом? :)

Цитата Сообщение от Undisputed Посмотреть сообщение
То есть наличие UB иногда документировано
Оно всегда документировано :)
В стандарте же написано явно, что то, что не документировано - то UB. Значит UB всегда документировано через обратное отношение :)

0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
09.01.2019, 14:06
DrOffset,
Ну это не то что бы будет враньё, суть то понятна, но все таки думаю небольшая неточность будет присутствовать )
Потому что по факту он тебе что-то да сказал, но не то чего ты ждал))
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
09.01.2019, 14:09
Цитата Сообщение от Undisputed Посмотреть сообщение
Если стандарт гарантирует смежность элементов для двумерного массива и описывает формулу доступа к элементам, то с этой точки зрения такой доступ вроде как можно считать легальным... И если это так тогда возникает некоторое противоречие с цитатой что вы привели...
Противоречия не возникает, т.к. стандарт не описывает формулу доступа к элементам.
1
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
09.01.2019, 14:11
rat0r,
Тогда ок, спасибо )
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
09.01.2019, 14:14
Цитата Сообщение от DrOffset Посмотреть сообщение
Я думаю, что между давать неверную информацию или не давать вообще я бы выбрал второе.
Это уже вторая тема близнец. И неточн6ость, - это неточность и я её признал. Также как Вы признали свои.
Цитата Сообщение от DrOffset Посмотреть сообщение
то лучше это стараться делать верно (по мере сил)
Я старался. И в начальной теме и в этой. И по мере сил, тема набрала тучу просмотров. Говоря о толщине ИМХО я говорил о том, что темы превращаются в набор взаимных шпилек. Хотя о константности массивов (и указателей) речь могла и не идти, вообще. Это было мелкой деталью в посте, в котором она прозвучала. Там было о времени жизни, видимости, о сравнении полноценного типа с заявленным классом хранения и куском в динамической памяти с доступом по типизированному указателю и пр. Но возражения пошли именно в адрес этой неточности. Остальное не интересно, оказалось. Хотя я успел поправиться ранее. И бог с ним.
0
09.01.2019, 14:42

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
превращаются в набор взаимных шпилек
Вы зря так думаете.
Я же сразу сказал, что
Цитата Сообщение от DrOffset Посмотреть сообщение
Я спрашиваю без подвоха, просто хочется узнать с чего вы решили, что он константный.
Никаких шпилек я вам отпускать не собирался. А вдруг бы оказалось, что это я, наоборот, чего-то не знаю и вы бы меня поправили своим ответом? Вдруг бы вы сослались на стандарт, и стало бы понятно, что там константа и в самом деле? Почему вы сразу думаете, что мой вопрос был написан с целью вас задеть?

Цитата Сообщение от IGPIGP Посмотреть сообщение
Но возражения пошли именно в адрес этой неточности. Остальное не интересно, оказалось.
Ну так это значит по остальным вопросам возражений не было :)

0
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
09.01.2019, 14:52

Не по теме:

бездельники завязывайте

0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
09.01.2019, 15:00
Цитата Сообщение от DrOffset Посмотреть сообщение
Почему вы сразу думаете, что мой вопрос был написан с целью вас задеть?
Я говорил о ИМХО как о мотиве. Моё внутреннее ощущение тут не при чём. Я не в обиде и не буду. Темы жалко.
Цитата Сообщение от DrOffset Посмотреть сообщение
Ну так это значит по остальным вопросам возражений не было
Но там же и была соль вопроса. Теперь её не раскопать. Понимаете, для меня главное - суть. Мелочи имеют значение, но они всё же мелочи.
Но если говорить о не изменяемом л-вэлью, то я бы создал отдельную тему. Это типичная, не просто, дырявая абстракция, - это дыра в черепе, когнитивная яма. Какой воспалённый математический мозг придумал такое?
Стандарт штука полезная. Особенно когда это не черновик. Но есть же и негатив. Программное обеспечение обновляют не только для улучшения для пользователя. Это и для облегчения его карманов. Причем, второе часто превалирует. Разрабы компиляторов не заинтересованы в появлении конкурентов. Или заинтересованны? Тут тема такая, что огонь прямо!
DrOffset,
1
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
09.01.2019, 17:07
Цитата Сообщение от rat0r Посмотреть сообщение
В каком месте оно законное?
во всех

Цитата Сообщение от rat0r Посмотреть сообщение
Ну и опять код с UB при выходе за границу массива
в каком месте тут UB при выходе за границы массива?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
09.01.2019, 17:13
Цитата Сообщение от eva2326 Посмотреть сообщение
во всех
Пруф?
Цитата Сообщение от eva2326 Посмотреть сообщение
в каком месте тут UB при выходе за границы массива?
UB в месте выхода за границы массива.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
09.01.2019, 17:58
Цитата Сообщение от rat0r Посмотреть сообщение
UB в месте выхода за границы массива.
Вы бы скомпилировали что ли. Там выводится 123456789. Думаете случайно? И приведение не к массиву указателей на целое, то есть не к первому элементу массива массивов. Это автоматически происходит. А суровый кастинг reinterpret_cast это не слишком большое живодёрство. Мне не интересны компиляторы у которых вначале массива какая-то служебная ерунда. То есть, речь могла бы идти о переносимости, но UB это от слова ubuntu (человечность - всегда так непредсказуема).
DrOffset, смотрите.
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
09.01.2019, 18:02
Цитата Сообщение от IGPIGP Посмотреть сообщение
Вы бы скомпилировали что ли.
И о чём это скажет?
Цитата Сообщение от IGPIGP Посмотреть сообщение
Там выводится 123456789. Думаете случайно?
UB ≠ случайное поведение.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
09.01.2019, 18:13
rat0r, Вас спрашивают (не один я как видите) почему Вы считаете что это UB. А Вы упираетесь и храните загадочное молчание.
Если Вы помните то речь шла о загадочной "формуле приведения n-мерного массива" к указателю на первый элемент. Эта формула, по идее не существует. Потому, что первое приведение даст указатель на массив размерности n-1. Но поскольку обратного преобразования (из указателя в массив) не существует, то на этом цепь автоматических преобразований и прерывается. Тот код что я написал, в какой-то степени сарказм, но он вполне работоспособен. Хотя, может где-то и не будет работать. Во всяком случае я не стану этого делать, хотя бы потому, что без этого легко можно обойтись. С другой стороны, было бы безопаснее скастить не имя массива а именно адрес первого элемента &a[0][0]. Я не вижу предмета для обсуждения в данной теме.
0
 Аватар для eva2326
1685 / 513 / 107
Регистрация: 17.05.2015
Сообщений: 1,524
09.01.2019, 18:18
Цитата Сообщение от rat0r Посмотреть сообщение
Пруф?
Презумпция невиновности? Не, не слышал.

Или как вы вообще себе представляете пруф, подтверждающий корректность исходного кода?

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

http://www.open-std.org/jtc1/s... /n4659.pdf

Цитата Сообщение от rat0r Посмотреть сообщение
UB в месте выхода за границы массива.
Вероятно, вы не поняли моего вопроса:
"в каком месте тут UB при выходе за границы массива?"

В представленном коде нет никакого выхода за пределы массива.
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
09.01.2019, 18:20
Цитата Сообщение от IGPIGP Посмотреть сообщение
Вас спрашивают (не один я как видите) почему Вы считаете что это UB. А Вы упираетесь и храните загадочное молчание.
Я уже пару раз показывал, почему это UB. Надоело.
Пусть теперь те, кто считает, что UB нет, тащит разбор кода по косточкам с цитатами из стандарта.

Цитата Сообщение от IGPIGP Посмотреть сообщение
речь шла о загадочной "формуле приведения n-мерного массива" к указателю на первый элемент. Эта формула, по идее не существует. Потому, что первое приведение даст указатель на массив размерности n-1.
Так элемент массива размерности n это массив размерности n-1. На первый такой элемент указатель получается неявно в определённых контекстах. Что не так и какая тут нужна "формула"?

Цитата Сообщение от IGPIGP Посмотреть сообщение
Тот код что я написал, в какой-то степени сарказм, но он вполне работоспособен
В каком-то смысле работоспособен, но не легален. Там UB.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
09.01.2019, 18:27
Цитата Сообщение от rat0r Посмотреть сообщение
Так элемент массива размерности n это массив размерности n-1. На первый такой элемент указатель получается неявно в определённых контекстах. Что не так и какая тут нужна "формула"?
Вы посмотрите о чём там речь шла, вместо демонстрации низкой распознавательной эффективности. Там шла речь о
Цитата Сообщение от IGPIGP Посмотреть сообщение
о загадочной "формуле приведения n-мерного массива" к указателю на первый элемент
при чём типа - элемента низшего ранга. Всё это было в контексте обсуждения того факта, что многомерный массив внутренне одномерен. Дать ссылку к тем постам или сами найдёте?
Это что вы пишете
Цитата Сообщение от rat0r Посмотреть сообщение
элемент массива размерности n это массив размерности n-1. На первый такой элемент указатель получается неявно в определённых контекстах.
Это понятно и ежу. Я это написал, кстати:
Цитата Сообщение от IGPIGP Посмотреть сообщение
первое приведение даст указатель на массив размерности n-1
DrOffset, смотрите. Это обычное развитие событий.
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
09.01.2019, 18:30
Цитата Сообщение от eva2326 Посмотреть сообщение
Презумпция невиновности
здесь не при чём.

Цитата Сообщение от eva2326 Посмотреть сообщение
Или как вы вообще себе представляете пруф, подтверждающий корректность исходного кода?
Очень просто. Есть стандарт, который описывает поведение кода. Берёшь код и для каждой конструкции там приводишь соответствующие пункты стандарта. Описывающие поведение.
Если стандарт говорит, что что-то приводит к UB — то это UB. Если в стандарте просто ничего явно не сказано, то это тоже считается UB. Так что презумпция невиновности тут не работает. А как раз наоборот, неопределённым является всё, что не определено явно.

Цитата Сообщение от eva2326 Посмотреть сообщение
Могу ссылочку на черновик стандарта скинуть.
Теперь ещё релевантные цитаты оттуда надо скинуть.

Цитата Сообщение от eva2326 Посмотреть сообщение
В представленном коде нет никакого выхода за пределы массива.
Читай документ по своей ссылке внимательнее.

Добавлено через 3 минуты
Цитата Сообщение от IGPIGP Посмотреть сообщение
многомерный массив внутренне одномерен
Бессмысленное утверждение с т.з. стандарта.

Цитата Сообщение от IGPIGP Посмотреть сообщение
Я это написал, кстати:
Так в чём проблема с получением указателя на первый элемент массива? Зачем какой-то reinterpret_cast?
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
09.01.2019, 19:15
Цитата Сообщение от rat0r Посмотреть сообщение
Так в чём проблема с получением указателя на первый элемент массива?
Вы уже не сможете понять.

Добавлено через 22 минуты
Для массива гарантируется последовательное размещение в памяти его элементов. Если имеем массив массивов (2-d случай) то гарантируется последовательное размещение 1-d массивов в 2-d массиве. Массив это тип имеющий размер и как мы помним адресная арифметика вся построена на размере типа, начальном адресе и индексе. То есть, из последовательного размещения 1-d массивов и последовательного размещения элементов в 1-d массивах, следует следует последовательное размещение всех элементов 2-d массиве от начального и до конечного. Методом матиндукции можно легко показать, что данный вывод распространяется на массив с любым конечным (уточнение для особо внимательных к мелочам) количеством измерений. То есть, захватив адрес элемента с нулевыми (всеми без исключения, опять-же) индексами, можно легко пробежать все элементы последовательно.
Если в стандарте сказано иное, то люди которые его пишут (или толкуют), размещены в памяти д'UB'овым случайным образом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.01.2019, 19:15

В чем разница между массивом строк и List<string>?
А есть ли принципиальная разница между string array1 и List&lt;string&gt; array2 ? И если есть, то в чем она заключается?

Разница между статическим и экземплярным методом
В книге уже несколько раз встречается понятие статического и экземплярного метода, но не поясняется конкретно, в чем между ними разница,...

В чем разница между простым линейным списком, и динамическим линейным списком?
вопрос в теме

Разница между массивом структур и очередью
Поясните пожалуйста разницу между массивом структур и очередью.

VPN не подключается со статическим IP-адресом (ошибка 720), с динамическим — все работает
Всем привет! В магазине имеется VPN соединение подключающееся к серверу на складе. При получении ip-адреса автоматически подключение...


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru