а можно вопрос? В некоторых местах при работе с указателями знак * прижимается к имени переменной, например, int ***arr , а где-то к имени типа например new int** [rows] - есть ли тут какое-то общее правило в синтаксисе, чтобы понимать в общем случае как именно должен размещаться символ * ?
Сергей, надеюсь вы когда нибудь выйдете на связь, и очень верю что вся эта фигня в мире разрешится. Вы наверное не совсем осознаёте, какой гигантский вклад вы сделали, создав этот канал. Уверен, что благодаря вашей гениальной подачи, вашему дару всё объяснить так, что даже гуманитарий поймёт - многие подписчики реально стали и станут хорошими специалистами, а это в свою очередь добавляет новые идеи и решения в IT сферу этого мира, а значит и в развитие человечества. Вы - настоящий учитель и мастер, сделавший для человечества огромный вклад. Я восхищаюсь такими людьми, вы достойны всего самого лучшего. Здоровья вам и вашим близким. Желаю мирного неба над говой, и пусть в ближайшем будущем всё будет хорошо! Огромное Человеческое БЛАГОДАРЮ!
Согласен с тобой,тоже переживаю за такого крутого человека который бесплатно учит кодить так еще и как хорошо учит и объясняет без лишнего,таким людям отдельное место в раю
Нехочу ломать твои розовые очки, но изучения любого ЯП не гарантирует что ты станешь хорошим специалистом. Знай хоть ты 100 ЯП, если ты не понимаешь само программирование, то ты увы не станешь хорошим программистом. А само программирование он объясняет довольно на среднем или на более хуже уровне.
Один тимлид каждое утро смотрел какое-то видео на своём рабочем компьютере. Коллеги давно интересовались - что же он смотрит с такими глазами, полными осознания проблемы и её решения, но тимлид не давал им узнать, что же он смотрел. После его смерти, начальник включил компьютер, зашёл в историю и удивился со всей командой. В истории было это видео. PS я учусь c++, но не смотря на значительные продвижения, постоянно возвращаюсь к этому видео. А все эти уроки вышли 5 лет назад, но такие понятные и нужные людям. Надеюсь у автора ролика всё не просто хорошо, а замечательно!
Сергей спасибо большое. За этот год Вы стали для нас гуру и наставником в темном мире с++. Я все книги и лекции сравниваю с Вашими уроками и поверьте мне никто так доходчиво как Вы не объясняет.
Сейчас учусь в универе, где толком не объясняют ни С++, ни работу динамической памяти, но требуют написание различных лабораторных работ, программ...Искала в интернете что-то более менее понятное по теме динам.памяти и массивов в С++ и...ВОТ ОНО! Невероятно, но факт, Сергей (автор этого канала) обладает талантом преподавания в отличие от моих преподов в универе. Очень рада, что мне так повезло с таким контентом! Спасибо вам за ваш труд!
Сергей !! Спасибо за уроки !! Благодаря Вам я снова стал изучать С++. а остановился я лет 10 назад. как раз на указателях остановился, тогда не понял что к чему, и бросил. А Вы мотивировали меня!!!!!
Очень помогаешь, большое человеческое спасибо. Мне, как иностранному студенту, у которого в условиях короновируса отсутствуют лекции - это безумная помощь.
Сергей, спасибо вам огромное за ваш нелегкий труд! Благодаря вашим видеоурокам все становится на свои места. У вас талант объяснять непростые вещи понятным языком. Мира вам, успехов и всего наилучшего!😊
Огромное спасибо за ваш труд. У вас талант к преподаванию. Если будет желание, расскажите, пожалуйста, аудитории и про другой способ задания двумерного массива, если в последующих видео его нет. Представьте, что оперативная память заполняется исключительно одномерными массивами. Каждый раз для нового указателя мы снова выделяем память, которая может быть расположена далеко от предыдущего массива. В конце концов может оказаться так, что памяти осталось много, но слишком малого размера, чтобы добавить в неё еще один массив. Эта штука, если не ошибаюсь, называется фрагментацией памяти. Представьте игру тетрис. Когда вы играете в тетрис, нужно заполнять поле так, чтобы не было дыр. При таком способе заполнения оперативной памяти, будут дыры. Если бы их не было, на поле осталось бы место для еще для нескольких фигур. Можно сначала выделить кусок памяти размером rows x cols, а затем каждому указателю из массива указателей присвоить значение указателя на элемент i * cols, где i принимает значения от 0 до rows. При таком способе поле заполняется полностью. К тому же, становится проще освобождать память. Нужно освободить память массива указателей и общую память, выделенную под массив.
Очень интересный способ создать двумерный массив! Он ведь должен быть более правильным, с точки зрения эффективной работы с памятью, только использует ли кто этот вариант или же, может, библиотечные структуры данных( из той же stl) уже таким образом как раз и реализованы? Интересно, просто
Спасибо за урок, прекрасное видео, достаточно сложная тема, но поскольку иду последовательно по всем вашим видео, всё понял, сам когда в голове себе пересказываю тему, могу запутать себя же, а вы смогли всё очень доходчиво объяснить, спасибо!
Спасибо учитель! Очень долго сидел на одной задаче с динамическими массивами. Оказывается я неправильно их объявлял. Очень много сайтов обшарил, но ответ нашёл только у тебя)
Я всегда думал, зачем нас в 5-ом классе по предмету информатики заставляли в Paint рисовать всякие кружочки и палки, оказывается программирование и paint неразрывно связаны.
Вы не видите магию в операторе delete[] ? Он удаляет массив, не зная сколько в нем элементов. Хитрость в том, что оператор new [] выделяет память не только под элементы, но и под их количество, передавая на выход только указатель на первый элемент. А оператор delete[], используя указатель на первый элемент находит информацию о его размере. Как именно он находит и где хранит - зависит от компилятора.
Чтобы только выделить двумерный массив в плюсах нужно написать нехилую такую прогу и не запутаться. А в си, так ещё малоки-хулоки всякие. Долго, сложно, но зато мощно...жесть.
Кто не очень понял, можно привести аналогию. Представьте, что arr - это указатель на массив указателей. Это как если бы arr был списком (массивом) коробок, и каждая коробка может содержать другой список (массив) целых чисел. Сначала мы создаем основной список коробок (arr = new int*[rows]), а затем для каждой коробки создаем ее собственный список целых чисел (arr[i] = new int[cols]).
Сергей, очередное спасибо за очередной классный урок! Есть и другой способ создания двумерного динамического массива как одномерного (с предварительной разметкой с помощью вспомогательных указателей). Преимущество - один блок служебной информации, в то время как в рассказаном варианте их (блоков служебной информации) создается столько, сколько мы отводим под строки + под массив указателей на строки. Вариант работы с двухмерным массивом как с одномерным хорош для небольших объемов данных. Недостаток - потребность в целостном куске хипа (проблема фрагментации кучи). К чему это я все?... Быть может появиться урок и об этом втором способе )
В целом всё понятно, очень подробно объясняете, за это отдельное спасибо) Правда вот немного не понял объявления указателя на указатель(**arr), это получается, что мы объявляем указатель, который хранит в себе указатель типа int?(int*), вот в этом плане немного сложно пока понять и придётся наверное зазубрить, но вот всё остальное предельно ясно
@@ainurkhairullin6723 Советую изучать языки программирования по книгам, информационным сайтам или хорошим курсам где-нибудь на Udemy, к сожалению эта серия видеороликов не совсем подходит для начинающих и возможно С++ не лучший выбор для начала. Я бы предложил посмотреть в сторону web разработки если эта сфера вас интересует
То есть пользователь сам может выводить сколько будет строк и колонок в динамическом массиве, и кроме этой нет разницы между статическим? Огромное спасибо за уроки! Вы отлично объясняете👍 Продолжайте дальше снимать про программирование.
> и кроме этой нет разницы между статическим? На самом деле автор намеренно (например, чтобы упростить материал) или случайно вводит вас в заблуждение. Если вы вдруг продолжите изучать язык, то обязательно столкнетесь с этим. На самом деле "статический" массив - это массив массивов, а не массив указателей на массив. Автор не делает разницы между указателем и массивом рассматривая "вложенные" массивы, хотя эта разница есть и она определяет фундаментальное различие в адресации таких "вложенных" массивов. Таким образом, массив "статический" фундаментально отличается от той структуры "массив указателей", которая представлена в видео. "Статический" массив в С++ - это одна непрерывная область памяти, где "вложенные" массивы идут друг за другом. И никаких указателей в качестве элементов. Адреса вложенных массивов всегда рассчитываются относительно одного "базового" адреса начала всего двумерного массива (N, M) по формуле arr + (i * M + j). Т.е. в "статическом" массиве arr[N][M] операция arr[i][j] *всегда* эквивалентна arr[i * M + j] в массиве arr[N*M]. Помните, что смотря такие видео вы получаете полуфабрикат в виде знаний, который обязаны "размачивать" информацией из книг, иначе вы никогда не станете полноценными специалистами. Слова про полуфабрикат относятся и к таким комментариям как мой. Самой адекватной реакцией на него было бы желание взять хорошую книгу и разобраться в этом настолько подробно, насколько возможно.
@@assert_null Привет, я надеюсь ваш аккаунт еще живой, хочу у вас спросить какую литературу к примеру вы читаете по плюсам. Сам до этого 3 года сидел на шарпе и когда начал изучать плюсы просто афигел как круто тут все сделано.
Массивы и так работают с помощью арифметики указателей, но разработчики языка прописали более удобный синтаксис, чтобы мы не делали из буханки троллейбус.
@@TheWladberlin на данный момент их число перевалило за 7 миллиардов и постоянно растёт. К сожалению их количество это динамический массив без ограничений по количеству элементов.
С первого раза не понял, со второго вроде "влезло" :) Как по мне, моменты со звездочками требуют болеедетального объяснения. Что меня удивило, так это то, что мой массив содержит ИДЕНТИЧНЫЕ цифры. Т.е. на совершенно различных машинах функция дает идентичные числа.
правильно я понимаю, что при массив указателей на указатели ведет к перерасходу памяти? То есть если у нас в массиве указатели на указатели 1 млн строк типа int, то это 1 млн * 32 байта перерасход? Или компилятор соптимизирует?
В который раз благодарю вас за ваши уроки. Как то пытался писать игрушку консольную, но возникла проблема с построением программы. Я так понимаю это называется Алгоритм? Что посоветуете?
По сути мы создаем указатель. Но почему при выводе мы его не разыменовываем, но выводится значение хранящееся в соответствующем адресе, а не сам адрес?
*Друзья, если вы решили изучать программирование и подписались на канал - рекомендую вам нажать колокольчик чтобы никогда не пропускать новые уроки!*
а можно вопрос? В некоторых местах при работе с указателями знак * прижимается к имени переменной, например, int ***arr , а где-то к имени типа например new int** [rows] - есть ли тут какое-то общее правило в синтаксисе, чтобы понимать в общем случае как именно должен размещаться символ * ?
Спасибо тебе за хорошие уроки)
@Веталь я уже в другом видосе увидел ответ, что рекомендуется примыкать звездочку к имени переменной.
@Веталь нше 19:54 кг
@Веталь нщецднк
Сергей, надеюсь вы когда нибудь выйдете на связь, и очень верю что вся эта фигня в мире разрешится.
Вы наверное не совсем осознаёте, какой гигантский вклад вы сделали, создав этот канал.
Уверен, что благодаря вашей гениальной подачи, вашему дару всё объяснить так, что даже гуманитарий поймёт - многие подписчики реально стали и станут хорошими специалистами, а это в свою очередь добавляет новые идеи и решения в IT сферу этого мира, а значит и в развитие человечества.
Вы - настоящий учитель и мастер, сделавший для человечества огромный вклад. Я восхищаюсь такими людьми, вы достойны всего самого лучшего. Здоровья вам и вашим близким. Желаю мирного неба над говой, и пусть в ближайшем будущем всё будет хорошо!
Огромное Человеческое БЛАГОДАРЮ!
Согласен с тобой,тоже переживаю за такого крутого человека который бесплатно учит кодить так еще и как хорошо учит и объясняет без лишнего,таким людям отдельное место в раю
@@НикитаМихнев-д6з за что переживаешь , что с ним ?
Нехочу ломать твои розовые очки, но изучения любого ЯП не гарантирует что ты станешь хорошим специалистом. Знай хоть ты 100 ЯП, если ты не понимаешь само программирование, то ты увы не станешь хорошим программистом. А само программирование он объясняет довольно на среднем или на более хуже уровне.
Тяжело наверное, создавать такие комплексные и нехилые по продолжительности, уроки. Огромное спасибо, за такой труд.
ого запятых
я бы запятую перед "уроки" перенес перед словом наверное)
@@YAVLETAUNABIT опоздал ты на немного, лет на 5
А ты на лет 6)@@francheeze
@@YAVLETAUNABIT он украинец
Один тимлид каждое утро смотрел какое-то видео на своём рабочем компьютере. Коллеги давно интересовались - что же он смотрит с такими глазами, полными осознания проблемы и её решения, но тимлид не давал им узнать, что же он смотрел. После его смерти, начальник включил компьютер, зашёл в историю и удивился со всей командой. В истории было это видео.
PS я учусь c++, но не смотря на значительные продвижения, постоянно возвращаюсь к этому видео. А все эти уроки вышли 5 лет назад, но такие понятные и нужные людям. Надеюсь у автора ролика всё не просто хорошо, а замечательно!
Честно говоря понять можно...
Сергей спасибо большое.
За этот год Вы стали для нас гуру и наставником в темном мире с++.
Я все книги и лекции сравниваю с Вашими уроками и поверьте мне никто так доходчиво как Вы не объясняет.
Благодарю за поддержку!
@@SimpleCodeIT Спасибо Вам, за ваш гигантский труд!
забей в поиске ravesli c++, там ещё лучше и доходчивее
Просто Царь. До этого не мог разобраться как вся эта байда работает, но после твоих объяснений прямо пришло озарение.
Сложное, объяснить просто и доходчиво, это нужно иметь по малой мере талант, без преувеличения. Палиц вверх.
Сейчас учусь в универе, где толком не объясняют ни С++, ни работу динамической памяти, но требуют написание различных лабораторных работ, программ...Искала в интернете что-то более менее понятное по теме динам.памяти и массивов в С++ и...ВОТ ОНО! Невероятно, но факт, Сергей (автор этого канала) обладает талантом преподавания в отличие от моих преподов в универе. Очень рада, что мне так повезло с таким контентом! Спасибо вам за ваш труд!
Единственный канал,где я под каждым просмотренным мною видео ставлю лайк!
Аналогично!)
Сергей !! Спасибо за уроки !! Благодаря Вам я снова стал изучать С++. а остановился я лет 10 назад. как раз на указателях остановился, тогда не понял что к чему, и бросил. А Вы мотивировали меня!!!!!
Пожалуйста!
Мне тоже всегда хотелось бросить все на указателях и ссылках, но переборол себя, и вот уже здесь
обещаю задонатить в конце учебы хотя бы 500р на пивасик , ваши уроки очень помогли мне спасибо
+++++++++++
+
Задонатил?
Очень помогаешь, большое человеческое спасибо. Мне, как иностранному студенту, у которого в условиях короновируса отсутствуют лекции - это безумная помощь.
Спасибо за уроки!!! Они просто замечательные!! То, что пытался понять на протяжении месяца - понял за один Ваш урок! Еще раз спасибо, успехов Вам!)
Пожалуйста! Благодарю за поддержку!
Спасибо Вам Сергей! Объясняете намного лучше чем на платном курсе и бесплатно!
Пожалуйста!
Ну почему же бесплатно? Автор заслуживает немножечко доната....
@@drewdzzz Будь такой курс платным он бы стоил приличных денег, так что не немножечко)
Очень понятно автор объяснил, огромное спасибо.)
Сергей, спасибо вам огромное за ваш нелегкий труд! Благодаря вашим видеоурокам все становится на свои места. У вас талант объяснять непростые вещи понятным языком. Мира вам, успехов и всего наилучшего!😊
че бы я только делал без роликов этого автора.....дай Бог ему здоровья и денег побольше)))
Обожаю твои видео. Рассказываешь про программирование лучше чем преподаватель на лекции.
Огромное спасибо за ваш труд. У вас талант к преподаванию. Если будет желание, расскажите, пожалуйста, аудитории и про другой способ задания двумерного массива, если в последующих видео его нет.
Представьте, что оперативная память заполняется исключительно одномерными массивами. Каждый раз для нового указателя мы снова выделяем память, которая может быть расположена далеко от предыдущего массива. В конце концов может оказаться так, что памяти осталось много, но слишком малого размера, чтобы добавить в неё еще один массив. Эта штука, если не ошибаюсь, называется фрагментацией памяти.
Представьте игру тетрис. Когда вы играете в тетрис, нужно заполнять поле так, чтобы не было дыр. При таком способе заполнения оперативной памяти, будут дыры. Если бы их не было, на поле осталось бы место для еще для нескольких фигур.
Можно сначала выделить кусок памяти размером rows x cols, а затем каждому указателю из массива указателей присвоить значение указателя на элемент i * cols, где i принимает значения от 0 до rows. При таком способе поле заполняется полностью.
К тому же, становится проще освобождать память. Нужно освободить память массива указателей и общую память, выделенную под массив.
Очень интересный способ создать двумерный массив! Он ведь должен быть более правильным, с точки зрения эффективной работы с памятью, только использует ли кто этот вариант или же, может, библиотечные структуры данных( из той же stl) уже таким образом как раз и реализованы? Интересно, просто
Большое спасибо вам за урок и прекрасное пояснение, Сергей!
Спасибо за урок, прекрасное видео, достаточно сложная тема, но поскольку иду последовательно по всем вашим видео, всё понял, сам когда в голове себе пересказываю тему, могу запутать себя же, а вы смогли всё очень доходчиво объяснить, спасибо!
миллион лойсов за видео этому молодому человеку, счастья и здоровья!!!!!!!!!!!
Спасибо за ваши уроки!у вас талант обьяснять непонятные вещи такими понятными словами😊
смотрю видосы в 2022 году и очень помогают твои видосы) подробное объяснение без лишней дичи. спасибо тебе)
Ха!И я тоже!
Я не понимаю, почему у такого классного канала 16000 подписчиков, а у тех, кто нифига не обьясняет по миллиону!!! Не справедливо как-то
Обьеснить?
@@tyota да
Хотя и 10 месяцев прошло
потому что все хотят легкий контент где по логике зрителей должно все просто быть
Спасибо за уроки , вы прекрасно объясняете :)
Спасибо учитель! Очень долго сидел на одной задаче с динамическими массивами. Оказывается я неправильно их объявлял. Очень много сайтов обшарил, но ответ нашёл только у тебя)
спасибо большое за такое ясное разъяснение, трудно было разобраться с двумерным динамическим массивом, но теперь все стало намного понятней
Лучше на ютубе не найдёте чем #SimpleCode) Спасибо за такие бесплатные уроки)
Спасибо за видео)Очень благодарен)
Маэстро в мире объяснения программирования!
Спасибо за лучшие уроки!!!!!
На первом курсе, ни черта не врубался, под конец второго курса всё стало проще изза ваших уроков)
на каком сейчас ты курсе?
@@ДмитрийНормов-ю6ц выпустился год назад, сейчас работаю с php + oracle
@@prochel-lc4rh а как называется специальность, по которой учился?
@@ДмитрийНормов-ю6ц прикладная информатика
Огромное спасибо)) Уроки отличные!) очень помог)
Кто-то хотел поставить лайк второй раз, перевернул экран и поставил)
Раньше писал отдельные функции для перевода одномерных массивов в многомерные, так думаю будет удобнее, спасибо)
Спасибо за труд, очень понятно и качественно!!!!!
Программирование и Paint неразрывно связаны
Я всегда думал, зачем нас в 5-ом классе по предмету информатики заставляли в Paint рисовать всякие кружочки и палки, оказывается программирование и paint неразрывно связаны.
Сергей, спасибо за урок!
Вы не видите магию в операторе delete[] ? Он удаляет массив, не зная сколько в нем элементов. Хитрость в том, что оператор new [] выделяет память не только под элементы, но и под их количество, передавая на выход только указатель на первый элемент. А оператор delete[], используя указатель на первый элемент находит информацию о его размере. Как именно он находит и где хранит - зависит от компилятора.
Чтобы только выделить двумерный массив в плюсах нужно написать нехилую такую прогу и не запутаться. А в си, так ещё малоки-хулоки всякие. Долго, сложно, но зато мощно...жесть.
Спасибо, Сергей. Очень хорошее объяснение! Как всегда высший пилотаж!
Наглядно, понятно. Спасибо
Отлично всё объясняешь!!
Спасибо! !!
Кроме уроков тут полезно и комменты читать
Большое спасибо, всё очень подробно и хорошо рассказано. Было понятно с первого раза!
Кто не очень понял, можно привести аналогию. Представьте, что arr - это указатель на массив указателей. Это как если бы arr был списком (массивом) коробок, и каждая коробка может содержать другой список (массив) целых чисел. Сначала мы создаем основной список коробок (arr = new int*[rows]), а затем для каждой коробки создаем ее собственный список целых чисел (arr[i] = new int[cols]).
Было очень полезно , закрепилось хорошо . Спасибо за урок
Спасибо, большое!
Пожалуйста!
замечательное обучение по вашим видео.....очень прошу базу данных...sql
снимите пожалуйста уроки по базам данных. вы просто супер.
Вот это была сложная тема. Благодарю.
Спасибо Сергей
как всегда топ
Спасибо огромное . Что бы делал без ваших видео. Лайк и подписка.
Спасибо, за Ваш труд!!!
Вы бесподобны!!! спасибо Вам !!
наконец-то осознал эту тему! супер!
Первая тема которая стала для меня сложной для понимания
Отлично объяснил, подписка!
Спасибо! Доходчиво и понятно!!!
Спасибо за уроки!!!
чётко!!! благодарю!!!
Спасибо! Действительно помог! Лайк подписка.
Пожалуйста!
Сергей, очередное спасибо за очередной классный урок!
Есть и другой способ создания двумерного динамического массива как одномерного (с предварительной разметкой с помощью вспомогательных указателей). Преимущество - один блок служебной информации, в то время как в рассказаном варианте их (блоков служебной информации) создается столько, сколько мы отводим под строки + под массив указателей на строки. Вариант работы с двухмерным массивом как с одномерным хорош для небольших объемов данных. Недостаток - потребность в целостном куске хипа (проблема фрагментации кучи). К чему это я все?... Быть может появиться урок и об этом втором способе )
Вы лучший учитель ,я бы вам премию какую нибудь дал )
Отличное объяснение !
Awesome!I like it
Прошло более года, и 0 дизов, хороший результат)
В целом всё понятно, очень подробно объясняете, за это отдельное спасибо) Правда вот немного не понял объявления указателя на указатель(**arr), это получается, что мы объявляем указатель, который хранит в себе указатель типа int?(int*), вот в этом плане немного сложно пока понять и придётся наверное зазубрить, но вот всё остальное предельно ясно
Получилось зазубрить?)
@@ainurkhairullin6723 4 года так то прошло) Я уже работаю давно в сфере)
@@LenTos1337 рад за вас)) Я тоже хочу переквалифицироваться в программиста
@@ainurkhairullin6723 Советую изучать языки программирования по книгам, информационным сайтам или хорошим курсам где-нибудь на Udemy, к сожалению эта серия видеороликов не совсем подходит для начинающих и возможно С++ не лучший выбор для начала. Я бы предложил посмотреть в сторону web разработки если эта сфера вас интересует
@@LenTos1337 Только бекэнд, очень круто смотреть то, что ты знаешь и узнавать что-то новое.
Спасибо большое за ролик! Очень помог разобраться
просто лучший!! спасибо огромное
#динамическиймассив #SimpleCode #урокипрограммирования
Спасибо тебе большое за все видео)
Отличное видео, очень понятно и доходчиво!
Однако, Сергей, забыли уточнить про получение адреса ячейки внутреннего массива arr[i] + j
спасибо! Огромное! идём дальше!
Крутой урок😁
спс за ваши видео
Класс! Спасибо!
То есть пользователь сам может выводить сколько будет строк и колонок в динамическом массиве, и кроме этой нет разницы между статическим?
Огромное спасибо за уроки! Вы отлично объясняете👍 Продолжайте дальше снимать про программирование.
> и кроме этой нет разницы между статическим?
На самом деле автор намеренно (например, чтобы упростить материал) или случайно вводит вас в заблуждение. Если вы вдруг продолжите изучать язык, то обязательно столкнетесь с этим.
На самом деле "статический" массив - это массив массивов, а не массив указателей на массив. Автор не делает разницы между указателем и массивом рассматривая "вложенные" массивы, хотя эта разница есть и она определяет фундаментальное различие в адресации таких "вложенных" массивов.
Таким образом, массив "статический" фундаментально отличается от той структуры "массив указателей", которая представлена в видео. "Статический" массив в С++ - это одна непрерывная область памяти, где "вложенные" массивы идут друг за другом. И никаких указателей в качестве элементов. Адреса вложенных массивов всегда рассчитываются относительно одного "базового" адреса начала всего двумерного массива (N, M) по формуле arr + (i * M + j). Т.е. в "статическом" массиве arr[N][M] операция arr[i][j] *всегда* эквивалентна arr[i * M + j] в массиве arr[N*M].
Помните, что смотря такие видео вы получаете полуфабрикат в виде знаний, который обязаны "размачивать" информацией из книг, иначе вы никогда не станете полноценными специалистами.
Слова про полуфабрикат относятся и к таким комментариям как мой. Самой адекватной реакцией на него было бы желание взять хорошую книгу и разобраться в этом настолько подробно, насколько возможно.
@@assert_null Привет, я надеюсь ваш аккаунт еще живой, хочу у вас спросить какую литературу к примеру вы читаете по плюсам. Сам до этого 3 года сидел на шарпе и когда начал изучать плюсы просто афигел как круто тут все сделано.
@@ainurkhairullin6723 привет! Назову фамилии авторов: Липпман, Саттер, Мейерс, Страуструп, Джосаттис, Вандевурд, Александреску.
Да, хочу сказать спасибо. =)
Вместо arr[i][j] можно использовать *(*(arr + i) + j), арифметика указателей ежжи))
слишком запутанно))
индексирование привычнее
Массивы и так работают с помощью арифметики указателей, но разработчики языка прописали более удобный синтаксис, чтобы мы не делали из буханки троллейбус.
а ещё можно на ассемблере это всё написать, что уж там
@@C2H5OHH нахер ассемблер, пиши свой метод
Огромное спасибо!
0 дизайков! Это само собой говорит о качестве материала
Не надейся, дебилов хватает
@@TheWladberlin на данный момент их число перевалило за 7 миллиардов и постоянно растёт. К сожалению их количество это динамический массив без ограничений по количеству элементов.
@@self-toughstudy6635 Самокритичненько)))
@@TGrod истинна где-то рядом
С первого раза не понял, со второго вроде "влезло" :)
Как по мне, моменты со звездочками требуют болеедетального объяснения.
Что меня удивило, так это то, что мой массив содержит ИДЕНТИЧНЫЕ цифры. Т.е. на совершенно различных машинах функция дает идентичные числа.
Супер!!!
Большое спасибо, разобрался
Подскажите пожалуйста по функциям создающим двумерный динамический массив
delete это хорошо, но а где-же nullptr , или тут не применяется?
Нужно больше -золота- ДЗ.
Спасибо!
Лайк и подписка, сразу с 2 аккаунтов :)
Спасибо
правильно я понимаю, что при массив указателей на указатели ведет к перерасходу памяти?
То есть если у нас в массиве указатели на указатели 1 млн строк типа int, то это 1 млн * 32 байта перерасход? Или компилятор соптимизирует?
ВАУ!
как вы указателем перепрыгиваете за двойные скобки?
В который раз благодарю вас за ваши уроки. Как то пытался писать игрушку консольную, но возникла проблема с построением программы. Я так понимаю это называется Алгоритм? Что посоветуете?
спасибо!
Мне понравилось
По сути мы создаем указатель. Но почему при выводе мы его не разыменовываем, но выводится значение хранящееся в соответствующем адресе, а не сам адрес?
А как сделать такой массив как в пайтоне например. Тип чтоб количество элементов массива можно было изменять в ходе программы
А как бы выглядел двумерный массив по архитектуре указателей?