|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||
В чем разница между динамическим массивом и статическим?07.01.2019, 11:59. Показов 58016. Ответов 220
Метки нет (Все метки)
ребята, я не понимаю различия. вроде читал литературу.
ну вот говорят, что динамический массив, это массив выделение памяти под который будет происходит в процессе выполнения программы. и тут я залез в онлайн компилятор (с++ 14) и сделал так
0
|
||||||
| 07.01.2019, 11:59 | |
|
Ответы с готовыми решениями:
220
Разница между статическим и динамическим полиморфизмом В чем разница между вектором и массивом В чем разница между обычным массивом и контейнером |
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
|
| 08.01.2019, 20:09 [ТС] | |
|
да,сложно.
вобщем двумерный массив, это превращенный компилятором одномерный. на стеке все попорядку: сначала элемент главного массива,потом элементы подмассива,главного, и снова идут элементы подмассива и тд. так ? насколько я далек от понимания?
0
|
|
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 08.01.2019, 20:37 | |
|
0
|
|
|
Неэпический
|
||
| 08.01.2019, 21:30 | ||
Сообщение было отмечено pcmax как решение
РешениеПредставьте, что это двумерный массив. Каждая клетка - элемент этого массива. Количество клеточек по горизонтали и вертикали - размерности массива, width и height. Можете даже индексы написать, чтобы лучше представлять что к чему. А теперь разрежьте листочек на полоски шириной в одну клетку, и расположите их друг за другом. Упс, получился одномерный массив. ![]() Как при таком расположении компилятор построит обращение к элементу по двум индексам? Да просто первый индекс делим на первую размерность и добавляем второй индекс. [i][j] == i / width + jПроверьте. Вот примерно так это всё и происходит.
2
|
||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,093
|
|||||||||||
| 08.01.2019, 21:57 | |||||||||||
|
Можно то же самое выразить чуть по-другому:
arr[W][H] = {arr[0], arr[1], arr[2], ..., arr[H-1]}, то есть одномерный массив объектов, каждый из которых выглядит как arr[0] = {arr[0][0], arr[1][0], arr[2][0], ..., arr[W-1][0]} ... arr[x] = {arr[0][x], arr[1][x], arr[2][x], ..., arr[W-1][x]} В результате весь массив выглядит так arr[W][H] = { {arr[0][0], arr[1][0], arr[2][0], ..., arr[W-1][0]}, {arr[0][1], arr[1][1], arr[2][1], ..., arr[W-1][1]}, ... {arr[0][H-1], arr[1][H-1], arr[2][H-1], ..., arr[W-1][H-1]} } = = { {arr[0][0], arr[1][0], arr[2][0], ..., arr[W-1][0]}, {arr[0][1], arr[1][1], arr[2][1], ..., arr[W-1][1]}, ..., {arr[0][H-1], arr[1][H-1], arr[2][H-1], ..., arr[W-1][H-1]} } Таким образом, в памяти статический массив любой размерности является линейным и не содержит избыточной информации. Динамических многомерных массивов в С/С++ нет, но есть несколько имитаций: 1.
2.
3. гибрид предыдущих: память выделяется единым куском, но начало массива интерпретируется как указатели на строки. Более сложен в понимании и реализации, но проще проверки успешности выделения памяти.
1
|
|||||||||||
|
Комп_Оратор)
|
|||
| 08.01.2019, 23:43 | |||
![]() А ведь, по чести сказать, нет иных причин кроме индексации чтобы создавать такой массив. ![]()
0
|
|||
|
317 / 268 / 61
Регистрация: 12.10.2011
Сообщений: 434
|
||
| 09.01.2019, 00:30 | ||
|
0
|
||
|
317 / 268 / 61
Регистрация: 12.10.2011
Сообщений: 434
|
||
| 09.01.2019, 00:48 | ||
|
Просто лень думать. Для 3-х скобок когда-то писал... Для n-скобок не возникало необходимости, - просто интересна общая формула.
0
|
||
|
Комп_Оратор)
|
||||
| 09.01.2019, 01:05 | ||||
|
Вот вопрос: Нативный (си-шный) массив это тип. Статическая переменная как и переменная любого другого типа характеризуется статическим классом хранения и может быть объявлена: -глобально; -в пространстве имён; -в функции; -в классе. Код выделения памяти генерируется на стадии компиляции и выполняется при загрузке программы. Время жизни переменной (массива в данном разе) - от начала и до завершения программы. Инициализация зависит от области объявления и создания. Автоматический массив (тот о котором говорит ТС) тоже требует размера на стадии компиляции. Код выделения памяти (на стеке) также генерируется на стадии компиляции, а создаётся автоматическая переменная (выполняется данный код) каждый раз при вхождении в область. То есть, локальные массивы живут и умирают вместе с областью. *** Блок-массивы (термин самопальный ибо динамические, динамически создаваемые и созданные в динамической памяти - уже заняты) выделяемые в куче, - не являются типом данных. Они связаны (если связаны) с указателем и имеют доступность через него вплоть до уничтожения. Эти блоки живут до их уничтожения и не зависят от времени жизни области (scope) где были созданы. Общность перечисленных сущностей состоит в перегрузке оператора индексации для указателей (кроме void*) и для массивов. Они предоставляют сходный интерфейс и огня подливает возможность array-to-pointer cast и в следствии, возможность передачи данных зверей в функции так, что ей безразлично что было передано.Остальное, типа, - пришёл char/wchar_t и всех послал... учить историю отношений с С, это отдельные темы.
0
|
||||
|
317 / 268 / 61
Регистрация: 12.10.2011
Сообщений: 434
|
||
| 09.01.2019, 01:24 | ||
|
Не по теме: Будет ссылка с google, может кому-нибудь и понадобится.
0
|
||
|
Комп_Оратор)
|
|||||||
| 09.01.2019, 01:38 | |||||||
0
|
|||||||
|
317 / 268 / 61
Регистрация: 12.10.2011
Сообщений: 434
|
|||||||
| 09.01.2019, 02:21 | |||||||
|
Для новичка полезней был бы этот код
Ерунду написал про reinterpret_cast, каюсь... Надо идти спать.
0
|
|||||||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
||||||
| 09.01.2019, 08:46 | ||||||
|
Добавлено через 36 минут arr[W][H] = {arr[0], arr[1], arr[2], ..., arr[W-1]}?new int[2][3] что такое?
0
|
||||||
|
Комп_Оратор)
|
||
| 09.01.2019, 10:36 | ||
|
Интересно, что апологеты непорочной разумности положения вещей, на вопросы вроде wtf? Говорят, что важна не академическая ценность языка а его практическая ценность. Однако, это зависит от того, атакует ли спорящий или защищается. Так как идя в атаку он может раскопать такую вещь, что неясно где её применить и какую, даже академическую ценность для новичка или практика она представляет. О константности контейнеров (массив - подобие шаблона, реализованное компилятором, кстати) ещё никто не захотел поговорить. Ну типа vector<const int> (интересно не то что это не бывает, - интересно почему это не бывает) vs const vector<int>. Ещё на пару десятков страниц хватит.
0
|
||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,093
|
|||
| 09.01.2019, 10:40 | |||
|
arr[W][H] это массив из H элементов (arr[W]).
0
|
|||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|||||||||
| 09.01.2019, 10:48 | |||||||||
1
|
|||||||||
|
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,093
|
||||
| 09.01.2019, 10:57 | ||||
|
Впрочем, на практике разницы нет, лишь бы по всей программе адресация была одинаковой. Добавлено через 5 минут arr = TYPE[Y] - массив из Y элементов типа TYPE. TYPE = int[X] - массив из X элементов типа int. Значит arr = int[X][Y] - массив из Y массивов, каждый из которых состоит из X целых чисел.
0
|
||||
|
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
|
|||||||||||||
| 09.01.2019, 11:21 | |||||||||||||
new int[2][3] создаёт объект типа int[2][3], как ни странно.
0
|
|||||||||||||
|
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
|
|||||||||||
| 09.01.2019, 11:43 | |||||||||||
|
rat0r,
У меня для кода
к тому же если пытаюсь скомпилировать такое:
не понятно вот что: 1. Что это за тип вообще такой 2. Почему выводимый через auto тип не работает когда его использую напрямую 3. По моим тестам данные при таком выделении располагаются в памяти друг за другом (это гарантировано при динамическом выделении памяти под двумерный массив таким образом?) 4. Это вообще стандартная штука? Спасибо
0
|
|||||||||||
| 09.01.2019, 11:43 | |
|
В чем разница между массивом строк и 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.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|