@@UFO26, размер динамического массива не узнаётся , а устанавливается в ходе исполнения кода в зависимости от использованного алгоритма , к примеру : const uint16_t MAX_SIZE = 65535; uint8_t WidthLine =137 ; for (uint16_t size = WidthLine ; size < (MAX_SIZE - WidthLine); size = size + WidthLine) { int * arr = now int [size] ; for (... дальше как в ролике... } Итак : наш size изначально имеет размер 137 , и в ходе исполнения шагов кода каждый раз увеличивается на число из переменной WidthLine =137 , и уже никогда не превысит 65 535 (я вычитаю WidthLine из MAX_SIZE , чтобы не случилось переполнения , ибо MAX_SIZE может быть не кратно WidthLine). Но при желании , и MAX_SIZE можно сделать не константой а переменной, куда операционка будет вкладывать значение допустимой длины непрерывной свободной области памяти .
Открою небольшую тайну, есть куча бесплатного качественного материала по изучению программированию. Книги хорошо подходят, но не для всех. Бесплатные курсы, абсолютно всем подходят. А видосов на ютубе и не только, вагон и маленькая тележка, при чем только русскоязычных,а сколько же на английском, представить сложно
спасибо большое за детальное объяснение! многие упускают всякие детали, когда объясняют, думая, что человек сам знает, что это, а вы прям и ссылки даете на нужные свои старые ролики, чтобы проследить логику уроков, если не понятно, и объясняете кратко, что дает возможность освежить старое, в общем. СПАСИБО ВАМ!!!
Сергей здравствуйте, я всегда думал что видео контент в сферах науки, это скорей кусок дерьма чем источник познавательности, люблю книги (хотя сложно даются), но когда я наткнулся на Ваш канал, он изменил всё представления об видео уроках, повторяю сейчас с++, много положительных эмоций Вы мне дали, спасибо что Вы есть, огромное Вам человеческое спасибо!!!!!!!счастья Вам и процветания.
Чем больше я учусь те больше понимаю что програмирование это командное дело . Спасибо и это фудоментальное добро вы делаеете как для языка так и для милионов людей кто то из них может что то сконструирует и а основы были истоки на вашем канале огромное Спасибо. За свет оброзования . За вдохновение и детали програмирование это командная деятельность . Репост это меньшее что я могу зделать .
Как то год учил именно этот язык, потому что другими ЯП (кроме С и АСМ) многие микроконтроллеры не возможно программировать, но чудо то какое только после твоих уроков я понял суть вещей в С++, даже в SOLOLEARN тройное прохождения С++ не помогло углубиться так. Спасибо за уроки, от тебя действительно выйдут много толковых учеников, чем у тех кто показывает о С++ в ютубе, а я их поведал не мало пока не нашел твой канал.
И пару недель назад начал смотреть только твой канал от начала до середины (пока что), зная что лучшего для меня не сыскать, значительно многие уроки я уже запоминаю с одного просмотра, а то что нет смотрю снова ведь искать ответы у других это нереально, реальнее смотреть видео снова ведь вы там объясняете все очень четко что редкость.
Какой же вы очень хороший человек Сергей!!! Я от души благодарен за ваши уроки. Пусть всегда с вами будет счастье и здоровье и любимые люди!!!! Я понимаю что можете сказать что я вас не знаю и почему пишу что вы хороший человек? Простая логика, у плохого человека не может быть так хорошо получаться так отлично объяснять что нибудь, тем более программирование))) еще раз спасибо огромное!!!
Подача урока на высшем уровне, жаль мало таких людей которые от души всё объяснят и так максимально легко что даже первоклашка сразу поймет. Всем бы так научится подавать материал а то ищу про Python одни профессора блин которые думают что всё все уже знают и сходу начинают всякие приложения писать. А Вам Сергей здоровья крепкого и успехов во всём!
05:29 - массив это непрерывная область памяти 13:23 - обязательно условие: чтобы в оперативной памяти было свободный непрерывный участок памяти 13:56 - в отладчике мы сможем увидеть только самый первый элемент
мне нравится, как в каждом уроке вы "рекламируете" предыдущий урок. если кто-то нечаянно попадёт на 55 урок, то ему придётся пересмотреть все уроки в обратном порядке. это такой себе рекурсивный урок. чтоб посмотреть 55ый, нужно посмотреть 54 предыдущих и вернуться на 55ый)
19:20, данные, которые лежат в этой ячейке принадлежат только этой программе и этому процессу, если бы это был кусочек видео из бандикама, то операционная система бы немедленно закрыла процесс из-за того, что она пытается достучаться к участку памяти, не принадлежащему ее процессу. Так что там лежат данные только этого процесса, ничто другое быть не может.
@Mimyagu artmoney получает так называемый handler процесса, через который и модифицирует данные оперативной памяти процесса и операционная система уже не считает это вмешательство «нелегальным»
Спасибо за видео. Теперь я понял как работала програма для взлома игр ArtMoney :) Её нужно было указать текущее значение денег, параметров или еще чего-то численного и когда она находила нужное значение пробовала поменять его. Теперь, я думаю, смог бы написать подобную программу ;)
А есть тут на канале видео о циклических сдвигах в двумерных массивах? А то про сдвиги в одномерных массивах информации много, а про двумерные что-то не нахожу толкового... А вообще очень хорошо и доходчиво всё объясняется. Сергей - молодец!
Если кто-то задумывался (и не знал) над тем, как работает 16-ричная система , то цифры ( а именно 1 2 3 и так далее до 9 ) записываются без изменений , а уже числа (>= 10 и < 16) будут иметь вид английского алфавита - A B C D E F где A=10 B=11 C = 12 D = 13 E = 14 F = 15, а вот число 16 принято писать за 0.
Можно вопрос: динамическая память для массива еще актуальна? у меня компилятор не ругается на такое: int n; cin >> n; int a[n]; тем более есть просто vector
Уважаемый Сергей!Если вы увидите ответьте пожалуйста!Во первых спасибо вам большое за эти уроки!Дошел вот 67 видео очень многое узнал,сам учусь в университете в Турции,благодаря вам я даже впереди того что обучают!!Вы дойстойны уважение!!Хотел у вас спросить на счет этой темы,вот у меня выходят разные числа в массиве да,но адреса одни и те же,это нормально?заранее благодарю!
стирать адресс указателя вообще не обязательно в любом случае(операционная система сама стек чистит закрывая программу). Это делается ради удобства и для того, чтобы случайно не зацепить чужие данные
Вспомнил сейчас, что после урока с массивами я попробовал указывать размеры двумерного массива через Cin и всё получилось. Теперь узнал, что получиться не должно было. Уже 2021-й год, может какие изменения завезли, есть информация об этом? Доп.: Вспомнил, что делал это уже после урока, да еще и на телефоне, который просил ввести числа до запуска программы, но после нажатия кнопки компиляции. Вопрос отпал.
Все правильно, так работает даже на C в старых версиях (имею ввиду указывать размеры и заполнять массиву н-мерные). Мне кажется автор просто решил так предостеречь новичков наверное, а может просто оговорился.
добрый день, у меня такой вопрос, пишу логику для плиточной игры на готовом движке (ue4), в проекте сделал класс инвентарь и в него добавил динамический целочисленный массив для записи Id предметов которые находятся у игрока, динамический потому, что инвентарь в процессе игры должен расширяться с уровнем игрока, в ue4 в каждом классе есть событие event tick которое вызывается каждый кадр, правильно ли я понимаю, что каждый кадр для массива будут выделяться разные ячейки памяти и выбираться такие адреса что бы мой массив поместился следуя арифметике массивов?
Скажите пожалуста как создать динамический масив, если размер будет постоянно менятся. В векторах я могу использовать команду название_вектора.push_back(значение). Как это сделать с динамическим масивом? Я понимаю, что это уроки на с++, но мне нужен ответ на вопрос на язике с. Заранее спасибо.
Спасибо большое за урок, все очень понятно кроме одного момента. Почему всё-таки необязательно писать const у переменной size. Понятно что это с помощью new как-то работает, но как именно. Урок про new и delete смотрела все равно не поняла этот момент
@@dumgik5811 Потому что это динамический массив. Пользователь программы может ввести размер динамического массива, по ходу выполнения программы, тогда под этот размер и выделится память. Какой размер введёт пользователь заранее неизвестно. В статическом массиве память выделяется сразу, как только запускается программа, потому программе надо знать размер статического массива в самом начале, ещё при запуске, а не по ходу выполнения, как для динамического массива. Размер статического массива прописывает программист в самой программе, а не пользователь.
Если я создаю функцию которая возвращает динамический массив, то когда мне её нужно убивать delet-ом? в теле функции или при её вызове? double* Gauss(...) { ... return x; delete[] x; // тут? } int main() { double* x = new double[n] x = Gauss(); delete[] x; // или тут? }
Функцию можно организовать так, что при одном условии она создаёт массив, а при другом - убивает. Я думаю что признаком хорошего тона является создание и убивание в рамках одного объекта.
В объёме. «Статический» выделяется в стеке, там места очень мало и его объём не увеличивается, и туда можно поместить только небольшие массивы. К тому же, все переменные в стеке недолговременные, уничтожаются при выходе из области, где переменная была объявлена. А в куче - хранится до тех пор, пока не убрать (delete).
А у меня не выводится массив через массив. Беру данные одного дин. массива вставляю в другой и мне компилятор выводит мусор. Интересно почему. Вывод делаю правильно.
Почему компилятор в записи int *arr = new int [size] перемещает значок звездочки к int? То есть получается так: int* arr = new int [size]. У Вас так не происходит.
А я всегда пишу int*, а нет int *. Так более понятнее. И для себя я понимаю, что указатель типа int. А когда *на, то это уже само значение, которое лежит в ячейке памяти
Я делаю так же как и вы показывали. Выделяю под массив память, оперирую этими элементами и в конце очищаю выделеную память по указателю. Но что бы убедиться в очищености выделеной памяти я снова выводил эти же элементы и у меня выводило в консоль что очистился первый элемент а остальные сохранили свои значения (не очистились). Подскажи пожалуста.
Ненужная большинству фигня, мало того что большинство не понимают, так еще и времени много занимает, уж лучше бы изучали С одновременно изучаю архитектуру пк. Ну и после можно подучить язык ассемблера для дисассемблирования.
я вот кстати хз, но у меня компилятор сразу инициализирует массив со значением элементов 0 при интовом массиве. версия компилятора: `--> g++ --version g++ (GCC) 8.2.1 20180831 Copyright (C) 2018 Free Software Foundation, Inc. п.с. с типом дабл тожэ самое (проверил на всякий случай, не округляет ли интовый тип мусор до нуля).
*Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*
Можно ли вместо динамического массива использовать векторы? Или вообще полностью заменить динамический массив на вектор.
@@АлександрИбраимов-п3р Думаю нет((
@@UFO26, размер динамического массива не узнаётся , а устанавливается в ходе исполнения кода в зависимости от использованного алгоритма , к примеру :
const uint16_t MAX_SIZE = 65535;
uint8_t
WidthLine =137 ;
for (uint16_t size = WidthLine ; size < (MAX_SIZE - WidthLine); size = size + WidthLine)
{ int * arr = now int [size] ; for (... дальше как в ролике... }
Итак : наш size изначально имеет размер 137 , и в ходе исполнения шагов кода каждый раз увеличивается на число из переменной WidthLine =137 , и уже никогда не превысит 65 535 (я вычитаю WidthLine из MAX_SIZE , чтобы не случилось переполнения , ибо MAX_SIZE может быть не кратно WidthLine). Но при желании , и MAX_SIZE можно сделать не константой а переменной, куда операционка будет вкладывать значение допустимой длины непрерывной свободной области памяти .
Лучший
Вы, наверное, первый человек, которому стараюсь не забывать ставить лайки под каждым видео.
Благодарю за поддержку!
так же)))
Аналогично, даже иной раз переживаю, а не забыл ли палец вверх клацнуть, увлекшись содержимым урока.
Аналогично !!!
Так же
ЛУЧШИЙ НА РУНЕТЕ.
ТЫ ДАЕШЬ ВОЗМОЖНОСТЬ ТЕМ, У КОГО ПРОБЛЕМЫ С ФИНАНСАМИ, БЕЗ ДЕНЕЖНЫХ ЗАТРАТ ИЗУЧАТЬ ПРОГРАММИРОВАНИЕ. СПАСИБО БОЛЬШОЕ!!!
Открою небольшую тайну, есть куча бесплатного качественного материала по изучению программированию. Книги хорошо подходят, но не для всех. Бесплатные курсы, абсолютно всем подходят. А видосов на ютубе и не только, вагон и маленькая тележка, при чем только русскоязычных,а сколько же на английском, представить сложно
спасибо большое за детальное объяснение! многие упускают всякие детали, когда объясняют, думая, что человек сам знает, что это, а вы прям и ссылки даете на нужные свои старые ролики, чтобы проследить логику уроков, если не понятно, и объясняете кратко, что дает возможность освежить старое, в общем. СПАСИБО ВАМ!!!
Пожалуйста! Благодарю за поддержку!
Сергей здравствуйте, я всегда думал что видео контент в сферах науки, это скорей кусок дерьма чем источник познавательности, люблю книги (хотя сложно даются), но когда я наткнулся на Ваш канал, он изменил всё представления об видео уроках, повторяю сейчас с++, много положительных эмоций Вы мне дали, спасибо что Вы есть, огромное Вам человеческое спасибо!!!!!!!счастья Вам и процветания.
Чем больше я учусь те больше понимаю что програмирование это командное дело . Спасибо и это фудоментальное добро вы делаеете как для языка так и для милионов людей кто то из них может что то сконструирует и а основы были истоки на вашем канале огромное Спасибо. За свет оброзования . За вдохновение и детали програмирование это командная деятельность . Репост это меньшее что я могу зделать .
Как то год учил именно этот язык, потому что другими ЯП (кроме С и АСМ) многие микроконтроллеры не возможно программировать, но чудо то какое только после твоих уроков я понял суть вещей в С++, даже в SOLOLEARN тройное прохождения С++ не помогло углубиться так. Спасибо за уроки, от тебя действительно выйдут много толковых учеников, чем у тех кто показывает о С++ в ютубе, а я их поведал не мало пока не нашел твой канал.
спасибо тебе. А то я одному дебилу объясняю, что здесь проще, а он упирается, твой коммент помог мне в решении данного вопроса, спасибо!
И пару недель назад начал смотреть только твой канал от начала до середины (пока что), зная что лучшего для меня не сыскать, значительно многие уроки я уже запоминаю с одного просмотра, а то что нет смотрю снова ведь искать ответы у других это нереально, реальнее смотреть видео снова ведь вы там объясняете все очень четко что редкость.
7:18 это лучший момент когда сергей программист наверное уровня мидл вводит cout с 10 раза ))))))))
7:10
;)
7:17 - Господи, да попади уже по клавишам)
Спасибо за урок, сенсей
сорян, клавиатура под столом, печатаю в слепую =)
Продолжайте в том же духе, это весело)
Огромное спасибо за уроки, у вас талант учителя великолепный, продолжаю учиться по ним.
#динамическиймассив #SimpleCode #урокипрограммирования
Какой же вы очень хороший человек Сергей!!! Я от души благодарен за ваши уроки. Пусть всегда с вами будет счастье и здоровье и любимые люди!!!! Я понимаю что можете сказать что я вас не знаю и почему пишу что вы хороший человек? Простая логика, у плохого человека не может быть так хорошо получаться так отлично объяснять что нибудь, тем более программирование))) еще раз спасибо огромное!!!
Благодарю за данный урок. Все достаточно информативно и просто для изучения.
Пожалуйста!
Вау это прям совокупность всего, что проходили круто преподаешь!
Прекрасно подготовлены материалы уроков и грамотно поданы, осталось только усвоить и применить ;)
Я обожаю Ваш канал и этот курс. Благодаря вам покорить программирование становится проще, спасибо вам огромное!
Подача урока на высшем уровне, жаль мало таких людей которые от души всё объяснят и так максимально легко что даже первоклашка сразу поймет. Всем бы так научится подавать материал а то ищу про Python одни профессора блин которые думают что всё все уже знают и сходу начинают всякие приложения писать.
А Вам Сергей здоровья крепкого и успехов во всём!
Очень доступно объясняешь! Всегда смотрю твои видео, если не могу вникнуть в тему, которую нам задают.
*комментарий для продвижения ролика* спасибо за уроки!
Доступно и понятно! Спасибо вам большое, что стараетесь)
Спасибо, очень хорошо, что недостатки плюсов показываете.
это не недостатки, это фичи))
Поздоровляю с 350к просмотров)скоро милион будет)
Благодарствую.
Удачи и успехов в делах.
👍🏾
Спасибо за уроки, всем кто спрашивает вас рекомендую
05:29 - массив это непрерывная область памяти
13:23 - обязательно условие: чтобы в оперативной памяти было свободный непрерывный участок памяти
13:56 - в отладчике мы сможем увидеть только самый первый элемент
Массив - это тип данных. В отладчике вы можете увидеть не только самый первый элемент, но и весь массив целиком, при желании.
Нет в языках С/С++ типа данных «массив». Массив - это просто указатель на кусок памяти.
ОЧень хорошие уроки !!! Спасибо за Ваш труд !!!
Уважаемый Сергей, спасибо за видео!
Сергей, спасибо большое! Нереально круто объясняешь
Спасибо за уроки, все разжевано и понятно!
Большое спасибо вам за урок и прекрасное пояснение, Сергей!
мне нравится, как в каждом уроке вы "рекламируете" предыдущий урок.
если кто-то нечаянно попадёт на 55 урок, то ему придётся пересмотреть все уроки в обратном порядке.
это такой себе рекурсивный урок. чтоб посмотреть 55ый, нужно посмотреть 54 предыдущих и вернуться на 55ый)
Вероятно один из самых удачных примеров рекурсии)
не, вначале рекурсии почти не было, где-то с 40го началась))
Очень круто! Спасибо большое за такое доступное и понятное объяснение всего)
Сколь много я узнал !!! Спасибо вам большое.
Сергей - гуру!
Спасибо!
19:20, данные, которые лежат в этой ячейке принадлежат только этой программе и этому процессу, если бы это был кусочек видео из бандикама, то операционная система бы немедленно закрыла процесс из-за того, что она пытается достучаться к участку памяти, не принадлежащему ее процессу. Так что там лежат данные только этого процесса, ничто другое быть не может.
@Mimyagu artmoney получает так называемый handler процесса, через который и модифицирует данные оперативной памяти процесса и операционная система уже не считает это вмешательство «нелегальным»
Спасибо за видео. Теперь я понял как работала програма для взлома игр ArtMoney :) Её нужно было указать текущее значение денег, параметров или еще чего-то численного и когда она находила нужное значение пробовала поменять его. Теперь, я думаю, смог бы написать подобную программу ;)
получилось написать ?)
@@ВладиславТимофеюк ого, за 6 років я написав багато чого, але не на плюсах) пішов у фулстек дотнета і дуже добре себе почуваю на посаді техліда 😎
Классный урок, очень приятно слушать
Спасибо тебе за уроки.
А есть тут на канале видео о циклических сдвигах в двумерных массивах? А то про сдвиги в одномерных массивах информации много, а про двумерные что-то не нахожу толкового... А вообще очень хорошо и доходчиво всё объясняется. Сергей - молодец!
Если кто-то задумывался (и не знал) над тем, как работает 16-ричная система , то цифры ( а именно 1 2 3 и так далее до 9 ) записываются без изменений , а уже числа (>= 10 и < 16) будут иметь вид английского алфавита - A B C D E F где A=10 B=11 C = 12 D = 13 E = 14 F = 15, а вот число 16 принято писать за 0.
Какие числа? Это цифры, а цифры 16 нет в 16церичной системе
@@arsIsv цифры это от 0 до 9
@@КириллАнтонов-й6т по твоему F это не цифра в 16ричной системе счисления?)
@@arsIsv я тебе про 10-тичную говорю
@@arsIsvчел просто хотел помочь, а ты нашёл совсем безобидную ошибку и говоришь об этом, это говорит о том, что у тебя самооценка низкая
Ты просто лучший!!!
*Большое спасибо! Очень полезное видео!*
Очень круто и интересно!
Спасибо большое:)
Прекрасное объяснение! 🤟🤟
Спасибо с Украины) Лайк
И я Украинский ЛАЙК жмакаю после каждого видео на своих 2-х аккаунтах !!!
ты лучший
Огромное спасибо вам🔥
За урок спасибо!
удоляй свой моссив, удоляй сказал, он динамический 💣
спасибо за урок! :)
just thank you!
19:20 В виндовсе у каждой программы своё адресное пространство
Спасибо, я больше не буду издеваться над памятью моего компа...
Благодарю 🙏
Уважаемый Сергей ты можешь сделать рубрику где вы будете отправлять исходники с ошибками а мы будем их
исправлять
нет, такого не будет.
это глупо
А чистить данные в ячейках массива через null или nullptr здесь ненужно, как в случае с обычными данными?
тоже интересно
Напишите, пожалуйста, если вы нашли ответ на вопрос
@@Kokurorokuko Напишите, пожалуйста, если вы нашли ответ на вопрос
@@crackall1946 имеет смысл установить в nullptr только сам указатель на массив (т.е. arr = nullptr)
@@leshiyni давно уже рашил этот вопрос. У меня плкйлист к концу подходит
Можно вопрос: динамическая память для массива еще актуальна? у меня компилятор не ругается на такое:
int n;
cin >> n;
int a[n];
тем более есть просто vector
Спасибо!
Уважаемый Сергей!Если вы увидите ответьте пожалуйста!Во первых спасибо вам большое за эти уроки!Дошел вот 67 видео очень многое узнал,сам учусь в университете в Турции,благодаря вам я даже впереди того что обучают!!Вы дойстойны уважение!!Хотел у вас спросить на счет этой темы,вот у меня выходят разные числа в массиве да,но адреса одни и те же,это нормально?заранее благодарю!
Как в Турции образование? На кого конкретно учитесь?
Спасибо
7:11, боль
that`s amazing!!!
Нельзя получить чужие данные, только данные, которые относятся к процессу
Здравствуйте, Сергей. Будут ли бинарные деревья рассматриваться в дальнейшем?
Будут.
В matlab все объекты динамические и там была команда pack. В си были функции mark и relese , что посоветуете в cpp?
Сергей, здравствуйте! Спасибо за подробный рассказ. ПОдскажите как удалить часть массива, тем самым уменьшить его длину?
Класно!
спасибо!
Вопрос, нужно ли при работе с массивом стирать данные из указателя или нет?
Напишите, пожалуйста, если вы нашли ответ на вопрос
стирать адресс указателя вообще не обязательно в любом случае(операционная система сама стек чистит закрывая программу). Это делается ради удобства и для того, чтобы случайно не зацепить чужие данные
Вопрос, вы хотите сказать что система при выделении динамической памяти не контролирует выход за нее ?
Вспомнил сейчас, что после урока с массивами я попробовал указывать размеры двумерного массива через Cin и всё получилось. Теперь узнал, что получиться не должно было. Уже 2021-й год, может какие изменения завезли, есть информация об этом?
Доп.: Вспомнил, что делал это уже после урока, да еще и на телефоне, который просил ввести числа до запуска программы, но после нажатия кнопки компиляции. Вопрос отпал.
Все правильно, так работает даже на C в старых версиях (имею ввиду указывать размеры и заполнять массиву н-мерные). Мне кажется автор просто решил так предостеречь новичков наверное, а может просто оговорился.
А не подскажите, почему в xcode в статическом массиве, когда задаем ему размерность можно отбросить const?
добрый день, у меня такой вопрос, пишу логику для плиточной игры на готовом движке (ue4), в проекте сделал класс инвентарь и в него добавил динамический целочисленный массив для записи Id предметов которые находятся у игрока, динамический потому, что инвентарь в процессе игры должен расширяться с уровнем игрока, в ue4 в каждом классе есть событие event tick которое вызывается каждый кадр, правильно ли я понимаю, что каждый кадр для массива будут выделяться разные ячейки памяти и выбираться такие адреса что бы мой массив поместился следуя арифметике массивов?
Какую комбинацию клавиш Вы используете для создания конструкции цикла for ?
пишем for потом нажимаем TAB;
спасибо)
Скажите пожалуста как создать динамический масив, если размер будет постоянно менятся.
В векторах я могу использовать команду название_вектора.push_back(значение). Как это сделать с динамическим масивом? Я понимаю, что это уроки на с++, но мне нужен ответ на вопрос на язике с. Заранее спасибо.
Память не нагрузилась, а вот проц сразу наполовину и на буст частоты полетел)))
Спасибо большое за урок, все очень понятно кроме одного момента. Почему всё-таки необязательно писать const у переменной size. Понятно что это с помощью new как-то работает, но как именно. Урок про new и delete смотрела все равно не поняла этот момент
если зададим константу для сайза, то нельзя будет менять его значение вводом любого числа, и на выходе получим обычный статический массив
@@_qubbix это понятно, но вопрос тут в другом. почему массив вообще создается с неконстантным размером?
@@dumgik5811 Потому что это динамический массив. Пользователь программы может ввести размер динамического массива, по ходу выполнения программы, тогда под этот размер и выделится память. Какой размер введёт пользователь заранее неизвестно.
В статическом массиве память выделяется сразу, как только запускается программа, потому программе надо знать размер статического массива в самом начале, ещё при запуске, а не по ходу выполнения, как для динамического массива. Размер статического массива прописывает программист в самой программе, а не пользователь.
1.5 скорости можно смело ставить , очень медленно , на за инфу спасибо
для тебя может да, но большинству новичков надо все успевать переваривать в голове, чем не успевать обдумывать услышанную информацию
зато даже на х2 все слова разборчивы
Насколько мне известно, статические массивы тоже можно объявлять как неконстантные и инициализировать через ввод.
Я частично прав. Почему-то в Dev C++ не запрещено создавать массив из n элементов, где n - не константа. А в Visual Studio так нельзя. Почему так?
@@Kokurorokuko компиляторы разные
Если я создаю функцию которая возвращает динамический массив, то когда мне её нужно убивать delet-ом? в теле функции или при её вызове?
double* Gauss(...)
{
...
return x;
delete[] x; // тут?
}
int main()
{
double* x = new double[n]
x = Gauss();
delete[] x; // или тут?
}
Функцию можно организовать так, что при одном условии она создаёт массив, а при другом - убивает. Я думаю что признаком хорошего тона является создание и убивание в рамках одного объекта.
Интересно, если я например выделил размер для массива на 10, а потом изменил размер на 20, но за десятым будут чужие данные, что произойдет??
через отладчик можно посмотреть значение любого элемента массива, нужно навести на квадратную скобку тогда покажется значение i-того элемента
Подскажите пожалуйста как очистить полностью динамическую память
ваша переменная = nullptr или NULL;
@Musikan0
И доя чего ты дал неправильный ответ?
в чем преимущество динамического массива, чем статического, да и в целом, чем лучше динамическое выделение памяти, чем статическое
В объёме. «Статический» выделяется в стеке, там места очень мало и его объём не увеличивается, и туда можно поместить только небольшие массивы.
К тому же, все переменные в стеке недолговременные, уничтожаются при выходе из области, где переменная была объявлена. А в куче - хранится до тех пор, пока не убрать (delete).
После создания динамического массива хочу в цикле for присвоить nulptr для всех arr + i. Вижуал выдает ошибку. Почему?
А у меня не выводится массив через массив. Беру данные одного дин. массива вставляю в другой и мне компилятор выводит мусор. Интересно почему. Вывод делаю правильно.
почему у меня при таком же коде, как на видео, адрес ячеек динамического массива одинаковый? а на видео с шагом в 4 байта?
Чем вектор от динамического массива отличается?
Вектор - шаблон класса. Дин. массив - это объект, который расположенный в дин. области памяти.
кусочек бандикама😂😂
Почему компилятор в записи int *arr = new int [size] перемещает значок звездочки к int? То есть получается так:
int* arr = new int [size]. У Вас так не происходит.
А я всегда пишу int*, а нет int *. Так более понятнее. И для себя я понимаю, что указатель типа int. А когда *на, то это уже само значение, которое лежит в ячейке памяти
👍👍👍
Я делаю так же как и вы показывали. Выделяю под массив память, оперирую этими элементами и в конце очищаю выделеную память по указателю. Но что бы убедиться в очищености выделеной памяти я снова выводил эти же элементы и у меня выводило в консоль что очистился первый элемент а остальные сохранили свои значения (не очистились). Подскажи пожалуста.
Простите, у меня есть вопрос:мне преподователь (по с++) говорил что [] в delete не нужны.
значит надо еще где-нибудь поискать, что по этому поводу пишут
вроде, если без [ ], то очистится только нулевой элемент
@user-lp5ry7se4k
Твой преподаватель - мудак, не знающий С++
И да, я попробовал создать массив до ввода его размера, выдало ошибку - Коррупция кучи. и программа упала. Так что, на заметку возьмите.
А у кого V.S. 2022
Можете сказать что делать если
При обращении к динамической памяти
Вызывается исключение
Не ну я не могу! Остаток от деления 10 на 10 - не может быть равен 10!
там разве десять есть?
Смотря это видео, понимаю, зачем в универе у нас преподают язык Ассемблер на примере процессора Intel 8086.
Ненужная большинству фигня, мало того что большинство не понимают, так еще и времени много занимает, уж лучше бы изучали С одновременно изучаю архитектуру пк. Ну и после можно подучить язык ассемблера для дисассемблирования.
Как заполнить элементы массива нужными мне числами ?
Вместо rand() заполняй своими нужными.
я вот кстати хз, но у меня компилятор сразу инициализирует массив со значением элементов 0 при интовом массиве.
версия компилятора:
`--> g++ --version
g++ (GCC) 8.2.1 20180831
Copyright (C) 2018 Free Software Foundation, Inc.
п.с. с типом дабл тожэ самое (проверил на всякий случай, не округляет ли интовый тип мусор до нуля).
По сути переменная будет инициализирована значением 0 только вне функции.
Pochemu fuznkciya rand() vizivaet vsegda odni i te je chisla v odinakovo razbrosannom poryadke?
Посмотри 29 урок, там подробно все рассказано
орфографический инсульт
потому что нужно ввести сид. Для одинаковых сидов одинаковые числа.