|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||
В чем разница между динамическим массивом и статическим?07.01.2019, 11:59. Показов 57987. Ответов 220
Метки нет (Все метки)
ребята, я не понимаю различия. вроде читал литературу.
ну вот говорят, что динамический массив, это массив выделение памяти под который будет происходит в процессе выполнения программы. и тут я залез в онлайн компилятор (с++ 14) и сделал так
0
|
||||||
| 07.01.2019, 11:59 | |
|
Ответы с готовыми решениями:
220
Разница между статическим и динамическим полиморфизмом В чем разница между вектором и массивом В чем разница между обычным массивом и контейнером |
|
Комп_Оратор)
|
||||||||
| 08.01.2019, 14:16 | ||||||||
|
_stanislav, а что вы скажете, когда ТС воскликнет, что нашёл чудо и может создать массив:
Добавлено через 2 минуты
1
|
||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 08.01.2019, 14:25 | ||
|
Как только я узнаю предпосылки, которые вас привели к такому выводу, то смогу объяснить почему это не так.
1
|
||
|
Комп_Оратор)
|
|||||||||||
| 08.01.2019, 14:37 | |||||||||||
|
DrOffset, обычно в инструкции
arr присваивается копирующим присваиванием (допускающим ещё одно преобразование) и тот факт, что arr константен не виден. А вот
1
|
|||||||||||
|
"C with Classes"
|
|
| 08.01.2019, 14:59 | |
|
1
|
|
|
Комп_Оратор)
|
||
| 08.01.2019, 15:09 | ||
|
А указатель вроде arr - rvalue если точнее, но ведёт себя как неизменяемый (константный) программный объект.
1
|
||
|
"C with Classes"
|
|
| 08.01.2019, 15:12 | |
|
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 08.01.2019, 15:19 | ||
|
Во-вторых, вы не находите, что сейчас в некотором роде похожи на ТС, т.к. судите о неком свойстве по внешним признакам? Вы сможете найти более формальное обоснование, разве в стандарте где-то говорится, что prvalue указатель, который получается из массива, имеет const-квалификацию?
1
|
||
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
|||
| 08.01.2019, 16:25 [ТС] | |||
|
я это плохо понимаю Добавлено через 22 минуты покажите пожалуйста на небольшом примере, как это происходит. вот массив arr[2][2]; на стеке разместиться константный указатель и сам массив и подмассивы. подмассивы это я понимаю, что массивы, что будут элементами основного массива arr указатель будет ссылаться на область памяти в котором будет находится первый элемент массива,когда его присвоят этому массиву. что потом? от этой области памяти будут осчитаны элементы подмассива?
0
|
|||
|
"C with Classes"
|
|
| 08.01.2019, 16:49 | |
|
pcmax, зачем тебе эти дебри расслабься, возьми книгу Страуструпа для начинающих, для новичка хватит, а то с ума сойдешь
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||||||||||||||||
| 08.01.2019, 17:08 | ||||||||||||||||||
Сообщение было отмечено pcmax как решение
Решение
Первый пример характерен тем, что типизация и вычисление значения относительно начала последовательности ложится на компилятор. Второй пример - это ручное повторение того же механизма, но уже без гарантий (и ограничений) типизации для многомерных массивов. В обоих случаях никакие указатели не хранятся. Адрес начала массива и так известен - вычисляем, относительно зашитого в код компилятором смещения по стеку и адреса начала фрейма стека (который известен во время исполнения). На самом стеке никаких адресов не хранится в данном случае. Самый простой способ вам это прочувствовать на себе - ознакомиться с ассемблером, и порисовать на листочке стек и смещение по нему. Вот такой код
rsp содержит адрес стекового фрейма функции foo. Отняв (SUB) от него 40, а это не что иное как sizeof(int) * 10 - размерность массива в байтах, мы получили адрес начала массива, который и передали в функцию bar. Почему отняли? Потому что стек растет вниз. Это значит что при добавлении значения в него адрес вершины стека уменьшается.Видите, никаких указателей на стеке тут нет.
1
|
||||||||||||||||||
|
"C with Classes"
|
|
| 08.01.2019, 17:12 | |
|
0
|
|
|
Комп_Оратор)
|
|||
| 08.01.2019, 17:16 | |||
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||||||||||
| 08.01.2019, 17:21 | |||||||||||||
|
Тоже самое с многомерным массивом:
3 * 6 * sizeof(int), 18 * 4 = 72.Если создать массив из 18 элементов типа int, то ассемблер никак не изменится. PS. На самом деле иногда число байт, смещаемых на стеке может быть чуть больше, для обеспечения выравнивания. Но в контексте этой темы данный вопрос не существенен. Добавлено через 1 минуту ![]() Добавлено через 1 минуту
1
|
|||||||||||||
|
Комп_Оратор)
|
||||||||||
| 08.01.2019, 17:48 | ||||||||||
0
|
||||||||||
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||||
| 08.01.2019, 18:55 [ТС] | ||||||||
|
Добавлено через 18 минут не смог разобраться.
открыть получившийся файл nano и прочитать Ассемблер видимо там будет понятно что есть array[3[3[ но это с точки зрения Ассемблера, а как плюсы сами видят этот массив? где хранится его имя? как расположенны его элементы на стеке? сначала элементы массива или подмассива?
0
|
||||||||
|
"C with Classes"
|
|
| 08.01.2019, 18:57 | |
|
0
|
|
|
Комп_Оратор)
|
||
| 08.01.2019, 19:00 | ||
|
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||||||||||
| 08.01.2019, 19:20 | ||||||||||
![]() ________________________________ Вообще весьма досадно видеть, что вы воспринимаете наш разговор в контексте "замеров толщин". Неужели вам самому комфортно оставаться в этих вопросах на уровне наблюдаемых эффектов и не пытаться копнуть глубже? Собственно, если бы вы не воспринимали наш разговор как некие "замеры", то смогли бы обнаружить, что я был не совсем прав (и т.к. я со своей стороны ничем не мерился, то мне совершенно комфортно это признать). По нынешнему состоянию дел получается, что массив - это таки modifiable lvalue, но такой, который конвертируется в указатель в modifiable контекстах. Этот вывод можно сделать опираясь на эти цитаты:
Однако по исходному вопросу, все остается неизменным. prvalue, который образуется в выражении с инкрементом имени массива нельзя модифицировать вот поэтому:
Добавлено через 3 минуты Все остальные вычисления производятся относительно него исходя из известных размеров типов на этапе компиляции (в результирующий код встраиваются заранее подготовленные смещения). Добавлено через 54 секунды Добавлено через 1 минуту Сначала элементы первого подмассива, потом второго и т.д. Точно так, как если бы это был один массив единственной размерности. Это все хорошо видно на примерах выше. Вы просто торопитесь. Будь я вашим преподавателем, я бы отправил вас медитировать на сутки или двое, прежде чем позволил бы задать новые вопросы.
4
|
||||||||||
|
Комп_Оратор)
|
||||
| 08.01.2019, 19:31 | ||||
|
И разговор уже пару страниц идёт о замере ширины (и длины) истинности высказывания. А между тем, константность и немодифицируемость (в части их различий), это дебри для данной темы и выяснение идёт лишь в контексте того кто был не прав. А для ТС было бы полезней понять, что выделенный блок остается жить по выходе из функции, например. Но на это ноль реакции. О статическом, динамическом и тёпло-мягком говорим. ![]() При чём каждый о своём. Каждый решает, о чём речь идёт (в контексте того о чём он говорил и о чём нет). А может мы не читаем друг друга как следует?
0
|
||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 08.01.2019, 19:45 | |||
|
И хоть про динамически (размещаемые) массивы я не говорил, но про автоматические - было сказано достаточно, чтобы речи о "нуле реакции" не шло ![]() Для него это просто фоновый шум. Но уж лучше такой, хоть кому-то полезный, чем никакой.
1
|
|||
| 08.01.2019, 19:45 | |
|
В чем разница между массивом строк и List<string>? Разница между статическим и экземплярным методом В чем разница между простым линейным списком, и динамическим линейным списком? Разница между массивом структур и очередью VPN не подключается со статическим IP-адресом (ошибка 720), с динамическим — все работает Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
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.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|