Адреса и указатели в Си. Адресная арифметика

Поделиться
HTML-код
  • Опубликовано: 5 фев 2025
  • Объявление указателя.
    Разыменование * и взятие адреса &.
    Адресная арифметика.
    Имя массив как константный адрес.
    Курс молодого бойца по информатике (Язык Си).
    cs.mipt.ru/c_intro

Комментарии • 238

  • @Sentinel-1
    @Sentinel-1 5 лет назад +162

    Лучшее объяснение, что я видел. Всё по существу и без лишнего словоблудия.

    • @КекЛол-й3ы
      @КекЛол-й3ы Год назад +1

      Именно, я смотрел много видео и читал многое, но везде либо вскользь говорится или много воды, а тут четко с примерами все объяснили представил, закрепил, очень благодарен

  • @БываетИтак-г1щ
    @БываетИтак-г1щ 4 года назад +112

    я НИКОГДА, НИ-КО-ГДА не писал комментариев к видео, но тут, решил освежить некоторые вещи в памяти, как же жаль, что мне сразу так не объясняли, суть даже не в том, что я открыл для себя что-то новое, а просто с сожалением вспомнил процесс того, как я пару лет назад понимал это и как мне это объясняли. Приятно смотреть. Супер!

    • @nikolayshishkin6293
      @nikolayshishkin6293 Год назад +3

      И нашёл отличную видео-лекцию, когда в ней уже нет нужды😆

  • @ЛеопольдКотов-к3щ
    @ЛеопольдКотов-к3щ 6 лет назад +301

    Топовый препод

  • @sergepisarsky2038
    @sergepisarsky2038 2 года назад +17

    Оказывается можно абстрактные вещи, которыми изобилует программирование, объяснять на понятном языке. Но такой стиль, к сожалению, встретишь не часто, совсем не часто. Я после первых лекций в универе по основам программирования испытал настоящий стресс, а от этой лекции - положительные эмоции, т.к. изложенный материал не оставил пробелов в понимании. Запомнить понятный материал куда как легче, чем материал с белыми пятнами в понимании. Респект профи

    • @user-sq8bcgs6zq8n
      @user-sq8bcgs6zq8n 3 месяца назад

      Это и есть профессиональный преподаватель.

  • @КотТоля-ж1ч
    @КотТоля-ж1ч 6 лет назад +50

    Эх вот бы все преподы умели так доходчиво и интересно, с юмором объяснять....)

  • @kotnesobaka3080
    @kotnesobaka3080 5 лет назад +50

    Жалко нельзя поставить много лайков, Спасибо Тимофей за внятное и понятное объяснение!

  • @alexandrponomarenko4127
    @alexandrponomarenko4127 3 года назад +3

    23:32 - эта САМОЕ важное и простое объяснение, почему первый элемент всегда имеет индекс 0! Никто никогда мне не мог этого нормально объяснить, а тут... просто браво!!!

  • @yuriilipaiev7811
    @yuriilipaiev7811 4 года назад +4

    Преподаватель вселенского масштаба)) Сложные вещи простым языком. Очень рад что нашел этот канал. Тимофей, спасибо Вам за труд!

  • @andreieliseev1516
    @andreieliseev1516 4 года назад +10

    Тимофей Хирьянов, спасибо вам за видеоуроки, не каждому дано так доходчиво рассказывать!

  • @youtubeuser4684
    @youtubeuser4684 4 года назад +8

    Офигеть препод! Талант! Никакие курсы не нужны и универы

  • @fontes5697
    @fontes5697 2 года назад +9

    Как же это прекрасно, самое толковое объяснение темы из тех что видел, СПАСИБО ВАМ ОГРОМНОЕ!

  • @reddalailama4594
    @reddalailama4594 4 года назад +4

    Офигеть как всё подробно и наглядно... Я в шоке. Автор прекрасный учитель. Желаю как можно больше подписчиков

  • @evgenykonovalov4870
    @evgenykonovalov4870 5 лет назад +5

    Очень очень хорошая подача материала, чувствуется реальное понимание как преподнести информацию, преподаватель обладает хорошим багажом знаний. огромное уважение!!!!!

  • @art8fact188
    @art8fact188 5 лет назад +33

    Спасибо Вам огромное, Тимофей! Только вы корректно объяснили суть положения звёздочки. Все остальные ставят как попало без объяснения и ломают всю логику. После этого видео перемещаю Вас на моё 1е место в рейтинге преподавателей программирования )))

    • @TheCxnine
      @TheCxnine 5 лет назад

      Звездочку ставят к переменной, а не к типу, потому что кокда указатель передается в определении функции fn( int *p )он там уже пишется без типа { *p = 10; }

    • @denisd7743
      @denisd7743 4 года назад

      @@TheCxnine так вроде мужик сказал что похер где ставить звездочку если звездочка указывает на адресный тип

    • @ufi_ded
      @ufi_ded 4 года назад

      +++, читал кучу учеников, не мог разобраться, первое видео на ютуб и так повезло, лучший препод

  • @blackmass4925
    @blackmass4925 4 года назад +10

    Вот это я понимаю: дистанционное образование. Преподавателю поклон.

  • @bookuha
    @bookuha 3 года назад +1

    Вы лучший! Сижу тут, нервно хихикаю, от того, что наконец-то осознал

  • @juvusart
    @juvusart 5 лет назад +18

    Спасибо! Очень круто объяснили одну из самых сложных тем в си!

  • @imlaladede1290
    @imlaladede1290 2 года назад +1

    Вы лучший преподаватель!!!!!!!! Спасибо огромное за такое прекрасное объяснение!!!!!!!!!!!!!

  • @McGewen
    @McGewen 4 года назад +3

    даже просмотревь половину видео все очень прояснилось, вот это дядька, уважуха тебе! посмотрев до окнца - протсо апплодирую стоя!

  • @iloveariii
    @iloveariii 4 месяца назад

    Лучший преподаватель, главное с харизмой!!!!

  • @ИгорьПанькин-ъ7л
    @ИгорьПанькин-ъ7л 3 года назад +1

    Лучшее объяснение, Ваш канал просто находка , спасибо!!!

  • @744c
    @744c 5 месяцев назад

    Вау, ни в одном из учебников так доходчиво не объясняют

  • @7gennews
    @7gennews 2 года назад

    Все это знал, но даже тут вы смогли показать пару интересных вещей и еще лучше уложить все это в голове. Как всегда - видео лучшее на ютубе.

  • @oleholeynikov8659
    @oleholeynikov8659 4 года назад

    ну просто хочется обнять таких людей, преподаватель с талантом)) очень емко, понятно и на простых примерах

  • @linkjeinson770
    @linkjeinson770 5 лет назад +14

    Спасибо! Вы лучший препод в мире!)

  • @aef1hfqdcxaqwxxqsxqgvbnr797
    @aef1hfqdcxaqwxxqsxqgvbnr797 3 года назад

    как раз из-за указателей вылетел в свое время из универа. Си++ был на первом курсе а асм уже на втором. Спасибо за понятно изложенный материал!

  • @Mani_Fast
    @Mani_Fast 3 года назад +3

    Каждая секунда бесценна, спасибо вам

  • @Антон-з6у
    @Антон-з6у 6 лет назад

    Только внимательный зритель сможет увидеть под рубашкой застегнутой под последнюю пуговицу и повышенной тональностью голоса(что дает ложное представление "типичного программиста"), хорошую осанку и четко поставленную дикцию. Спасибо Вам за этот урок, многие вещи прояснились!

    • @Video-zo5oe
      @Video-zo5oe 5 лет назад

      Что значит "типичный программист"? Что все к нам прикопались, зависть берет, шаблоны ваши рвем? Завидно, да, ненавидели нас пока бухали и смотрели телевизор вместо учебы, а теперь зло берет, что нам служить приходится? Как насчёт типичного экономиста что работает таксистом, как насчёт типичного юриста что работает охранником?

  • @user-marrusia22
    @user-marrusia22 4 года назад +6

    Как хорошо, что нашла ваш канал! Спасибо большое за видео, очень понятно:)

  • @psg5_prog
    @psg5_prog 4 года назад +2

    Спасибо вам батюшка за прекрасную лекцию про указатели.

  • @AspireM3400
    @AspireM3400 5 лет назад

    Замечательный видеоурок, все понятно и по полочкам разжевано. С такой подаче наверно и динамические массивы будут по зубам любому тугодуму )))

  • @ufi_ded
    @ufi_ded 4 года назад +1

    Шутку про пять звёздочек заценили)
    Спасибо за понятное объяснение!

  • @Дмитрий-й1и7л
    @Дмитрий-й1и7л 4 года назад +2

    огромное спасибо за видео. Было много непонятного до вашего объяснения.

  • @mov_r16_r17
    @mov_r16_r17 5 лет назад +1

    Хорошее объяснение. Понравилось, что Тимофей подчеркнул, что * в объявлении - это не операция разыменования (мне больше нравится термин "ссылка по указателю"), а модификатор типа. Поэтому я предпочитаю объявления типа int* ip, вместо int *ip.

  • @robertnewman8824
    @robertnewman8824 Год назад

    Браво ! Лучшее объяснение !

  • @adilzhenisov28
    @adilzhenisov28 3 месяца назад

    Отличный урок, объяснил доступно👍

  • @ГеоргийОрлов-г5в
    @ГеоргийОрлов-г5в 4 года назад +14

    То неловкое чувство, когда тебе 40, а ты смотришь курс для школьников.
    Эх, в наше время таких преподов не было...

    • @tishafeed8085
      @tishafeed8085 4 года назад +6

      никогда не поздно учиться

  • @Mitaleko
    @Mitaleko Год назад

    Как здорово, очень понятно и по существу

  • @catastrophic3709
    @catastrophic3709 Год назад

    Тимофей, Вы просто лучший!

  • @Gena-ku7if
    @Gena-ku7if 5 лет назад +1

    Лучшее объяснение, реально....

  • @Blendershick
    @Blendershick 5 лет назад +4

    Спасибо огромное! Лучшее объяснение)

  • @ammonjerro396
    @ammonjerro396 2 года назад +2

    Хорошее объяснение. Я даже понял как работает. Вопрос - а зачем нужны все эти ссылки и указатели и почему напрямую не обратиться к переменной?

  • @rmgear6845
    @rmgear6845 4 года назад

    Уважаю за доходчивость объяснения

  • @UFO26
    @UFO26 5 лет назад +2

    «Любимая, я тебя поведу к самому краю Вселенной!
    Я подарю тебе эту звезду, светом нетленным будет
    она озарять нам путь в бесконечность…»*

  • @deitven9631
    @deitven9631 2 года назад

    Огромное спасибо за качественный контент!

  • @dizogdizog2591
    @dizogdizog2591 3 месяца назад

    Тимофей !!!Спасибо Вам большое

  • @SunSay
    @SunSay 3 года назад +3

    В Адресном языке программирования (1955г.) можно было ставить n звёздочек перед указателем и это имело очень большой смысл ("штрих-операция"). "Штрих-операция" (разыменование указателя) была апаратно реализована на ЭВМ "Киев" в 1955г.

  • @IgorAlov
    @IgorAlov 2 года назад

    На самом деле, все очень круто, но указатель, правильнее будет использовать тип void *, потому что размер ячейки под адрес в памяти будет равен, по сути разрядности процессора. Int * частный случай, который говорит о том, на какой тип данных представлен по конкретному адресу в памяти. В данном случае у вас int, но там может быть например char или вообще структура.

  • @АлексейКлоков-б1з

    Очень важный урок для меня. Спасибо вам

  • @cat_amanita
    @cat_amanita 4 года назад +2

    Указатели это моя самая любимая тема в Сишнике. И пожалуй это самая важная тема в этом языке. На указателях можно даже ООП изобразить. К примеру виртуальные функции из С++ можно сделать на Си с помощью указателей на функции. Я вообще недолюбливаю С++ и обожаю Си. Ибо указателей мне достаточно чтобы решить любую задачу.
    Многие сложные задачи можно решать введением дополнительного уровня косвенности. Так вот указатели какраз и позволяют мне вводить дополнительный уровень косвенности. Указатель на указатель на указатель.
    На Сишнике можно писать в ООП стиле именно благодаря указателям. Правда я почти никогда не использую ООП, т.к. считаю его вредным. Поэтому и не люблю С++ и Java.
    Я знаю 10 языков и мне часто так нехватает нормальных указателей из Си.
    Я бросил NodeJS, надоел он мне. Вернулся к любимому Си. 8 лет на JS писал и вдруг резко бросил

  • @archiechellaut9483
    @archiechellaut9483 3 года назад

    Большое спасибо вам за полезное видео, Тимофей!

  • @Магаоев-ш5з
    @Магаоев-ш5з 3 года назад

    Шикарно. Блестящее объяснение

  • @cat_amanita
    @cat_amanita 4 года назад +2

    Я в восторге от этого видоса :)

  • @maxframe4415
    @maxframe4415 4 года назад

    Мои глаза открылись... 😮. Спасибо!

  • @VasilyMT
    @VasilyMT 3 года назад

    Отличное лаконичное объяснение.

  • @АлексейЭмильевич
    @АлексейЭмильевич 5 лет назад +3

    Блистательно объясняет!

  • @Vovchirshtain
    @Vovchirshtain 2 года назад

    Просто лучший 👍💯

  • @ГеоргийОрлов-г5в
    @ГеоргийОрлов-г5в 4 года назад

    Я бы посоветовал Тимофею попреподавать ассемблер на микроконтроллерах AVR. Они очень простые в изучении, там все эти адреса можно прописывать вручную и очень хорошо разобраться.

  • @beehummingbird4744
    @beehummingbird4744 2 года назад

    Запихал его туда . топовый преподаватель . 😁😁😁 .

  • @pattypr0
    @pattypr0 6 месяцев назад

    Я 10 лет не мог понять, что делают эти сраные указатели и как с ними работать. Но теперь как понял!

  • @ИсламГашимов-э3н
    @ИсламГашимов-э3н 4 года назад

    Вообще мощно . Адреса это бомба

  • @МихаСёмин-п1т
    @МихаСёмин-п1т 5 лет назад +1

    Спасибо большое за уроки, объясняете всё очень доходчиво.
    Только не совсем понятен смысл употребление указателей.
    В данном примере, можно было без и указателя присвоить переменной значение

  • @Nikita_Pro89
    @Nikita_Pro89 2 года назад

    Смотрел год назад, вообще ничего не понял. Посмотрел сегодня - понял всё))

  • @Minas__Morgul
    @Minas__Morgul 4 года назад

    Спасибо вам за ваши уроки!!!

  • @nimgvae
    @nimgvae 4 года назад

    Шикарная подача.

  • @SecretSecret-c7o
    @SecretSecret-c7o 4 года назад

    Лучший, спасибо за лекцию

  • @canticle-y8m
    @canticle-y8m 2 часа назад

    Огонь!

  • @ЕвгенийЯ-щ6ъ
    @ЕвгенийЯ-щ6ъ 3 года назад +1

    Ого, круто, можно делать переменные с адресами переменных который сами лежат на каком то адресе и его тоже можно записать в переменную.
    А можно вопрос? Зачем это надо и где используется.
    Чувствуешь себя как на уроке, когда час объясняли что-то сложное, а зачем оно нужно так и не сказали

  • @ukrainianeye2545
    @ukrainianeye2545 4 года назад

    Супер! ОГРОМНОЕ СПАСИБО!

  • @Krotonyasha
    @Krotonyasha 2 года назад

    Топовое объяснение!

  • @KrassRome
    @KrassRome 2 года назад

    да - Вот дом, который построил Джек... Но все равно классно и доходчиво.

  • @epheymind8475
    @epheymind8475 3 года назад

    Благодарю! отличное объяснение

  • @vitalic853
    @vitalic853 2 года назад

    Однозначно лайк, спасибо

  • @billlanc9461
    @billlanc9461 Год назад

    Идеальное пояснение

  • @ИгорьВашкевич-з4у

    Спасибо! Супер!

  • @christferna
    @christferna 2 года назад

    Спасибо за лекцию!

  • @fen-siz
    @fen-siz 3 года назад

    на столько вопросов дал четкий ответ, а еще и до половины не досмотрел

  • @Divon89
    @Divon89 6 лет назад

    Отлично и внятно рассказал!

  • @АртёмМингазов-е8з
    @АртёмМингазов-е8з 4 года назад

    Огромное спасибо за видео

  • @yesleebeats8301
    @yesleebeats8301 4 месяца назад

    Я понял, спасибо 😊

  • @proletarian
    @proletarian 5 лет назад

    Указатели это гениальнейшая штука

  • @wizard_still
    @wizard_still 4 года назад

    действительно понятно, еще бы про флаги такое найти

  • @jimshtepa5423
    @jimshtepa5423 3 года назад

    в 20:20 производится разыменование А, получается разыменование можно выполнить не только указателя, но и массива или переменных любого типа, даже примитвов?

  • @ViktorRy2
    @ViktorRy2 3 года назад

    На 21:10 в выражении A[i] = *(A + i) какого типа должна быть переменная i? Если она типа char/short/int, то в правой части выражения перед сложением будет осуществлено её приведение до типа int*?

  • @sergeypyatkovskiy1808
    @sergeypyatkovskiy1808 6 лет назад +3

    Отличное видео

  • @DodgerEcho
    @DodgerEcho 2 года назад +1

    У меня один вопрос, зачем это надо, там где две звёздочки, три, ведь можно сделать простым способом например через присвоение переменной i другого значения, ну или хотя бы через *pi = ... Зачем остальные сложности?

  • @roman6572
    @roman6572 Год назад +1

    Тимофей, pi != &i, pi = 3,14.... :) прошу прощение, хотел попробовать пошутить, не знаю получилось или нет). Спасибо за уроки)

  • @1nfoGames
    @1nfoGames 4 года назад

    Ваааа, класс, наконец я понял

  • @Ma_X64
    @Ma_X64 4 года назад

    Прикольно было бы разложить по элементам массива их собственные адреса.

  • @иди_поешь
    @иди_поешь 4 года назад

    всё очень понятно, спасибо

  • @arturssitdikovs4480
    @arturssitdikovs4480 5 лет назад +1

    Очень понятно. Спасибо!!!

  • @БогданБородулин-э9р

    Все хорошо, только не понятно зачем это в итоге нужно, я про указатели. Если у нас есть переменная зачем нам обращаться к ней не по ее имени, а по адресу. Хотелось бы понять для чего это делается и какие преимущества это дает.

  • @forsink7289
    @forsink7289 Год назад

    Спасибо большое

  • @hannahr5037
    @hannahr5037 5 лет назад +1

    Тимофей,
    Спасибо!

  • @alltheworldsastage.11688
    @alltheworldsastage.11688 4 года назад

    Спасибо 🙏

  • @evgenykonovalov4870
    @evgenykonovalov4870 4 года назад

    как еще 1н лайк поставить просто топ видео

  • @Video-zo5oe
    @Video-zo5oe 5 лет назад +1

    Хороший урок спасибо

  • @sergeykorobkov9080
    @sergeykorobkov9080 4 года назад

    очень доходчиво,

  • @cat_amanita
    @cat_amanita 4 года назад

    В языке Nim мне очень нехватает арифметики указателей, поэтому решил использовать Nim и Си вместе. На 90% программу напишу на Си и 10% на Nim. Эти языки идеально сочетаются, потомучто Nim транспайлится в Си и только потом компилируется. Полгода уже юзаю Nim и я им очень сильно доволен. Но мне там нехватает единственной вещи, нормальных блин указателей. Они там есть, но ими пользоваться нифига неудобно, поэтому решил переписать весь свой код на Си. Ну не весь конечно, ибо высокоуровневый код лучше оставить на языке Nim, а низкоуровневые функции переписать на Си. Т.е. переписать те участи которые требуют максимальной скорости, те участки где так и просятся указатели. Ибо я люблю арифметику указателей, хоть она и опасна. Зато позволяет достичь очень высокой скорости

  • @socketam4524
    @socketam4524 5 лет назад +1

    Очень крутой препод.
    Только вот из-за слайд-шоу и микрофона видео смотреть тяжеловато.
    Но усё равно спасибо огромное ❤

    • @Video-zo5oe
      @Video-zo5oe 5 лет назад

      Какое слайд шоу