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

  Рет қаралды 168,568

Тимофей Хирьянов

Тимофей Хирьянов

Күн бұрын

Пікірлер: 237
@БываетИтак-г1щ
@БываетИтак-г1щ 4 жыл бұрын
я НИКОГДА, НИ-КО-ГДА не писал комментариев к видео, но тут, решил освежить некоторые вещи в памяти, как же жаль, что мне сразу так не объясняли, суть даже не в том, что я открыл для себя что-то новое, а просто с сожалением вспомнил процесс того, как я пару лет назад понимал это и как мне это объясняли. Приятно смотреть. Супер!
@nikolayshishkin6293
@nikolayshishkin6293 Жыл бұрын
И нашёл отличную видео-лекцию, когда в ней уже нет нужды😆
@Sentinel-1
@Sentinel-1 5 жыл бұрын
Лучшее объяснение, что я видел. Всё по существу и без лишнего словоблудия.
@КекЛол-й3ы
@КекЛол-й3ы Жыл бұрын
Именно, я смотрел много видео и читал многое, но везде либо вскользь говорится или много воды, а тут четко с примерами все объяснили представил, закрепил, очень благодарен
@sergepisarsky2038
@sergepisarsky2038 2 жыл бұрын
Оказывается можно абстрактные вещи, которыми изобилует программирование, объяснять на понятном языке. Но такой стиль, к сожалению, встретишь не часто, совсем не часто. Я после первых лекций в универе по основам программирования испытал настоящий стресс, а от этой лекции - положительные эмоции, т.к. изложенный материал не оставил пробелов в понимании. Запомнить понятный материал куда как легче, чем материал с белыми пятнами в понимании. Респект профи
@user-sq8bcgs6zq8n
@user-sq8bcgs6zq8n 2 ай бұрын
Это и есть профессиональный преподаватель.
@ЛеопольдКотов-к3щ
@ЛеопольдКотов-к3щ 6 жыл бұрын
Топовый препод
@evgeniygazetdinov1620
@evgeniygazetdinov1620 4 жыл бұрын
бог
@verbof2527
@verbof2527 2 жыл бұрын
Действительно толково объясняет
@ВенераШпак-х3е
@ВенераШпак-х3е 2 жыл бұрын
@@evgeniygazetdinov1620 это щ енот
@КотТоля-ж1ч
@КотТоля-ж1ч 6 жыл бұрын
Эх вот бы все преподы умели так доходчиво и интересно, с юмором объяснять....)
@alexandrponomarenko4127
@alexandrponomarenko4127 3 жыл бұрын
23:32 - эта САМОЕ важное и простое объяснение, почему первый элемент всегда имеет индекс 0! Никто никогда мне не мог этого нормально объяснить, а тут... просто браво!!!
@andreieliseev1516
@andreieliseev1516 4 жыл бұрын
Тимофей Хирьянов, спасибо вам за видеоуроки, не каждому дано так доходчиво рассказывать!
@kotnesobaka3080
@kotnesobaka3080 5 жыл бұрын
Жалко нельзя поставить много лайков, Спасибо Тимофей за внятное и понятное объяснение!
@fontes5697
@fontes5697 2 жыл бұрын
Как же это прекрасно, самое толковое объяснение темы из тех что видел, СПАСИБО ВАМ ОГРОМНОЕ!
@yuriilipaiev7811
@yuriilipaiev7811 4 жыл бұрын
Преподаватель вселенского масштаба)) Сложные вещи простым языком. Очень рад что нашел этот канал. Тимофей, спасибо Вам за труд!
@evgenykonovalov4870
@evgenykonovalov4870 5 жыл бұрын
Очень очень хорошая подача материала, чувствуется реальное понимание как преподнести информацию, преподаватель обладает хорошим багажом знаний. огромное уважение!!!!!
@youtubeuser4684
@youtubeuser4684 4 жыл бұрын
Офигеть препод! Талант! Никакие курсы не нужны и универы
@blackmass4925
@blackmass4925 4 жыл бұрын
Вот это я понимаю: дистанционное образование. Преподавателю поклон.
@reddalailama4594
@reddalailama4594 4 жыл бұрын
Офигеть как всё подробно и наглядно... Я в шоке. Автор прекрасный учитель. Желаю как можно больше подписчиков
@imlaladede1290
@imlaladede1290 2 жыл бұрын
Вы лучший преподаватель!!!!!!!! Спасибо огромное за такое прекрасное объяснение!!!!!!!!!!!!!
@oleholeynikov8659
@oleholeynikov8659 4 жыл бұрын
ну просто хочется обнять таких людей, преподаватель с талантом)) очень емко, понятно и на простых примерах
@juvusart
@juvusart 5 жыл бұрын
Спасибо! Очень круто объяснили одну из самых сложных тем в си!
@art8fact188
@art8fact188 5 жыл бұрын
Спасибо Вам огромное, Тимофей! Только вы корректно объяснили суть положения звёздочки. Все остальные ставят как попало без объяснения и ломают всю логику. После этого видео перемещаю Вас на моё 1е место в рейтинге преподавателей программирования )))
@TheCxnine
@TheCxnine 5 жыл бұрын
Звездочку ставят к переменной, а не к типу, потому что кокда указатель передается в определении функции fn( int *p )он там уже пишется без типа { *p = 10; }
@denisd7743
@denisd7743 4 жыл бұрын
@@TheCxnine так вроде мужик сказал что похер где ставить звездочку если звездочка указывает на адресный тип
@ufi_ded
@ufi_ded 4 жыл бұрын
+++, читал кучу учеников, не мог разобраться, первое видео на ютуб и так повезло, лучший препод
@bookuha
@bookuha 3 жыл бұрын
Вы лучший! Сижу тут, нервно хихикаю, от того, что наконец-то осознал
@iloveariii
@iloveariii 3 ай бұрын
Лучший преподаватель, главное с харизмой!!!!
@McGewen
@McGewen 4 жыл бұрын
даже просмотревь половину видео все очень прояснилось, вот это дядька, уважуха тебе! посмотрев до окнца - протсо апплодирую стоя!
@7gennews
@7gennews 2 жыл бұрын
Все это знал, но даже тут вы смогли показать пару интересных вещей и еще лучше уложить все это в голове. Как всегда - видео лучшее на ютубе.
@aef1hfqdcxaqwxxqsxqgvbnr797
@aef1hfqdcxaqwxxqsxqgvbnr797 3 жыл бұрын
как раз из-за указателей вылетел в свое время из универа. Си++ был на первом курсе а асм уже на втором. Спасибо за понятно изложенный материал!
@linkjeinson770
@linkjeinson770 5 жыл бұрын
Спасибо! Вы лучший препод в мире!)
@ИгорьПанькин-ъ7л
@ИгорьПанькин-ъ7л 3 жыл бұрын
Лучшее объяснение, Ваш канал просто находка , спасибо!!!
@Антон-з6у
@Антон-з6у 5 жыл бұрын
Только внимательный зритель сможет увидеть под рубашкой застегнутой под последнюю пуговицу и повышенной тональностью голоса(что дает ложное представление "типичного программиста"), хорошую осанку и четко поставленную дикцию. Спасибо Вам за этот урок, многие вещи прояснились!
@Video-zo5oe
@Video-zo5oe 5 жыл бұрын
Что значит "типичный программист"? Что все к нам прикопались, зависть берет, шаблоны ваши рвем? Завидно, да, ненавидели нас пока бухали и смотрели телевизор вместо учебы, а теперь зло берет, что нам служить приходится? Как насчёт типичного экономиста что работает таксистом, как насчёт типичного юриста что работает охранником?
@Mani_Fast
@Mani_Fast 2 жыл бұрын
Каждая секунда бесценна, спасибо вам
@user-marrusia22
@user-marrusia22 4 жыл бұрын
Как хорошо, что нашла ваш канал! Спасибо большое за видео, очень понятно:)
@psg5_prog
@psg5_prog 4 жыл бұрын
Спасибо вам батюшка за прекрасную лекцию про указатели.
@mov_r16_r17
@mov_r16_r17 5 жыл бұрын
Хорошее объяснение. Понравилось, что Тимофей подчеркнул, что * в объявлении - это не операция разыменования (мне больше нравится термин "ссылка по указателю"), а модификатор типа. Поэтому я предпочитаю объявления типа int* ip, вместо int *ip.
@AspireM3400
@AspireM3400 5 жыл бұрын
Замечательный видеоурок, все понятно и по полочкам разжевано. С такой подаче наверно и динамические массивы будут по зубам любому тугодуму )))
@744c
@744c 4 ай бұрын
Вау, ни в одном из учебников так доходчиво не объясняют
@adilzhenisov28
@adilzhenisov28 2 ай бұрын
Отличный урок, объяснил доступно👍
@ufi_ded
@ufi_ded 4 жыл бұрын
Шутку про пять звёздочек заценили) Спасибо за понятное объяснение!
@SunSay
@SunSay 3 жыл бұрын
В Адресном языке программирования (1955г.) можно было ставить n звёздочек перед указателем и это имело очень большой смысл ("штрих-операция"). "Штрих-операция" (разыменование указателя) была апаратно реализована на ЭВМ "Киев" в 1955г.
@ГеоргийОрлов-г5в
@ГеоргийОрлов-г5в 4 жыл бұрын
То неловкое чувство, когда тебе 40, а ты смотришь курс для школьников. Эх, в наше время таких преподов не было...
@tishafeed8085
@tishafeed8085 4 жыл бұрын
никогда не поздно учиться
@catastrophic3709
@catastrophic3709 Жыл бұрын
Тимофей, Вы просто лучший!
@robertnewman8824
@robertnewman8824 11 ай бұрын
Браво ! Лучшее объяснение !
@UFO26
@UFO26 5 жыл бұрын
«Любимая, я тебя поведу к самому краю Вселенной! Я подарю тебе эту звезду, светом нетленным будет она озарять нам путь в бесконечность…»*
@Дмитрий-й1и7л
@Дмитрий-й1и7л 4 жыл бұрын
огромное спасибо за видео. Было много непонятного до вашего объяснения.
@Mitaleko
@Mitaleko Жыл бұрын
Как здорово, очень понятно и по существу
@IgorAlov
@IgorAlov Жыл бұрын
На самом деле, все очень круто, но указатель, правильнее будет использовать тип void *, потому что размер ячейки под адрес в памяти будет равен, по сути разрядности процессора. Int * частный случай, который говорит о том, на какой тип данных представлен по конкретному адресу в памяти. В данном случае у вас int, но там может быть например char или вообще структура.
@dizogdizog2591
@dizogdizog2591 2 ай бұрын
Тимофей !!!Спасибо Вам большое
@ammonjerro396
@ammonjerro396 2 жыл бұрын
Хорошее объяснение. Я даже понял как работает. Вопрос - а зачем нужны все эти ссылки и указатели и почему напрямую не обратиться к переменной?
@deitven9631
@deitven9631 2 жыл бұрын
Огромное спасибо за качественный контент!
@Blendershick
@Blendershick 5 жыл бұрын
Спасибо огромное! Лучшее объяснение)
@ГеоргийОрлов-г5в
@ГеоргийОрлов-г5в 4 жыл бұрын
Я бы посоветовал Тимофею попреподавать ассемблер на микроконтроллерах AVR. Они очень простые в изучении, там все эти адреса можно прописывать вручную и очень хорошо разобраться.
@rmgear6845
@rmgear6845 4 жыл бұрын
Уважаю за доходчивость объяснения
@АлексейКлоков-б1з
@АлексейКлоков-б1з Жыл бұрын
Очень важный урок для меня. Спасибо вам
@beehummingbird4744
@beehummingbird4744 Жыл бұрын
Запихал его туда . топовый преподаватель . 😁😁😁 .
@jimshtepa5423
@jimshtepa5423 2 жыл бұрын
в 20:20 производится разыменование А, получается разыменование можно выполнить не только указателя, но и массива или переменных любого типа, даже примитвов?
@ViktorRy2
@ViktorRy2 2 жыл бұрын
На 21:10 в выражении A[i] = *(A + i) какого типа должна быть переменная i? Если она типа char/short/int, то в правой части выражения перед сложением будет осуществлено её приведение до типа int*?
@Vovchirshtain
@Vovchirshtain 2 жыл бұрын
Просто лучший 👍💯
@archiechellaut9483
@archiechellaut9483 3 жыл бұрын
Большое спасибо вам за полезное видео, Тимофей!
@Gena-ku7if
@Gena-ku7if 5 жыл бұрын
Лучшее объяснение, реально....
@Магаоев-ш5з
@Магаоев-ш5з 3 жыл бұрын
Шикарно. Блестящее объяснение
@maxframe4415
@maxframe4415 4 жыл бұрын
Мои глаза открылись... 😮. Спасибо!
@DeadnWoon
@DeadnWoon 5 ай бұрын
Можно ли обойтись без указателей, как явления - вот в чём вопрос?.. Нет, с адресами в памяти работать придётся - но нужны ли для этого специальные сущности или это просто синтаксический сахар? Если мы знаем размер адреса (который, видимо, традиционно равен размеру машинного слова), то просто берём целое (знаковое или беззнаковое, как нам удобнее) и храним в нём адрес. Отмечаем в блокнотике или где ещё размер того, адреса чего мы собираемся хранить - и всё! Если в языке существует некий оператор или функция, позволяющий найти ближайшее подходящее место в куче, ищем то место. Если в языке есть оператор или функция, позволяющие разместить переменную по конкретному адресу, используем его! В итоге исчезает вся проблема контекстной зависимости всей этой символики с её звёздочками и амперсандами. Просто работаем с адресами, как с целыми беззнаковыми числами.
@cat_amanita
@cat_amanita 4 жыл бұрын
Я в восторге от этого видоса :)
@DodgerEcho
@DodgerEcho 2 жыл бұрын
У меня один вопрос, зачем это надо, там где две звёздочки, три, ведь можно сделать простым способом например через присвоение переменной i другого значения, ну или хотя бы через *pi = ... Зачем остальные сложности?
@VasilyMT
@VasilyMT 3 жыл бұрын
Отличное лаконичное объяснение.
@АлексейЭмильевич
@АлексейЭмильевич 5 жыл бұрын
Блистательно объясняет!
@ЕвгенийЯ-щ6ъ
@ЕвгенийЯ-щ6ъ 3 жыл бұрын
Ого, круто, можно делать переменные с адресами переменных который сами лежат на каком то адресе и его тоже можно записать в переменную. А можно вопрос? Зачем это надо и где используется. Чувствуешь себя как на уроке, когда час объясняли что-то сложное, а зачем оно нужно так и не сказали
@Minas__Morgul
@Minas__Morgul 4 жыл бұрын
Спасибо вам за ваши уроки!!!
@МихаСёмин-п1т
@МихаСёмин-п1т 5 жыл бұрын
Спасибо большое за уроки, объясняете всё очень доходчиво. Только не совсем понятен смысл употребление указателей. В данном примере, можно было без и указателя присвоить переменной значение
@Video-zo5oe
@Video-zo5oe 5 жыл бұрын
Переменная что хранит адрес переменной которая сама хранится по какому-то адресу
@rattingmage9475
@rattingmage9475 4 жыл бұрын
Переменная равносильна адресу, указывающему на ячейку в памяти.
@SecretSecret-c7o
@SecretSecret-c7o 3 жыл бұрын
Лучший, спасибо за лекцию
@ИсламГашимов-э3н
@ИсламГашимов-э3н 4 жыл бұрын
Вообще мощно . Адреса это бомба
@ukrainianeye2545
@ukrainianeye2545 4 жыл бұрын
Супер! ОГРОМНОЕ СПАСИБО!
@nimgvae
@nimgvae 4 жыл бұрын
Шикарная подача.
@БогданБородулин-э9р
@БогданБородулин-э9р 2 жыл бұрын
Все хорошо, только не понятно зачем это в итоге нужно, я про указатели. Если у нас есть переменная зачем нам обращаться к ней не по ее имени, а по адресу. Хотелось бы понять для чего это делается и какие преимущества это дает.
@billlanc9461
@billlanc9461 Жыл бұрын
Идеальное пояснение
@epheymind8475
@epheymind8475 2 жыл бұрын
Благодарю! отличное объяснение
@vitalic853
@vitalic853 2 жыл бұрын
Однозначно лайк, спасибо
@ИгорьВашкевич-з4у
@ИгорьВашкевич-з4у Жыл бұрын
Спасибо! Супер!
@christferna
@christferna 2 жыл бұрын
Спасибо за лекцию!
@cat_amanita
@cat_amanita 4 жыл бұрын
Указатели это моя самая любимая тема в Сишнике. И пожалуй это самая важная тема в этом языке. На указателях можно даже ООП изобразить. К примеру виртуальные функции из С++ можно сделать на Си с помощью указателей на функции. Я вообще недолюбливаю С++ и обожаю Си. Ибо указателей мне достаточно чтобы решить любую задачу. Многие сложные задачи можно решать введением дополнительного уровня косвенности. Так вот указатели какраз и позволяют мне вводить дополнительный уровень косвенности. Указатель на указатель на указатель. На Сишнике можно писать в ООП стиле именно благодаря указателям. Правда я почти никогда не использую ООП, т.к. считаю его вредным. Поэтому и не люблю С++ и Java. Я знаю 10 языков и мне часто так нехватает нормальных указателей из Си. Я бросил NodeJS, надоел он мне. Вернулся к любимому Си. 8 лет на JS писал и вдруг резко бросил
@Krotonyasha
@Krotonyasha 2 жыл бұрын
Топовое объяснение!
@АртёмМингазов-е8з
@АртёмМингазов-е8з 4 жыл бұрын
Огромное спасибо за видео
@Divon89
@Divon89 5 жыл бұрын
Отлично и внятно рассказал!
@KrassRome
@KrassRome 2 жыл бұрын
да - Вот дом, который построил Джек... Но все равно классно и доходчиво.
@alexswipe4590
@alexswipe4590 5 жыл бұрын
Здравствуйте, Тимофей! Подскажите пожалуйста по поводу указателей и строковых литералов. Почему при выполнении следующей программы: int main(int argc, char** argv) { char str[30] = "Hello"; char *p; p = str; cout
@petrpetr9576
@petrpetr9576 4 жыл бұрын
Потому что так работает cout. Когда ему передается указатель на char то он печатает строку. Что бы увидеть адрес - пиши cout
@ilyuhagg8546
@ilyuhagg8546 Жыл бұрын
Либо я - дэбил, либо шото препод прогоняет. 3:30 говорит, что int* - это тип данных и пишется слитно(далее он пишет pi), а на 12:35 начинает кодить вообще по-другому, присваивая звёздочку имени переменной. Поясните, если не в тягость
@yesleebeats8301
@yesleebeats8301 3 ай бұрын
Я понял, спасибо 😊
@sergeypyatkovskiy1808
@sergeypyatkovskiy1808 6 жыл бұрын
Отличное видео
@иди_поешь
@иди_поешь 4 жыл бұрын
всё очень понятно, спасибо
@wizard_still
@wizard_still 4 жыл бұрын
действительно понятно, еще бы про флаги такое найти
@Ma_X64
@Ma_X64 4 жыл бұрын
Прикольно было бы разложить по элементам массива их собственные адреса.
@arturssitdikovs4480
@arturssitdikovs4480 5 жыл бұрын
Очень понятно. Спасибо!!!
@forsink7289
@forsink7289 Жыл бұрын
Спасибо большое
@alltheworldsastage.11688
@alltheworldsastage.11688 4 жыл бұрын
Спасибо 🙏
@namename2031
@namename2031 3 жыл бұрын
Одно не понимаю. Если мы заносим адрес в переменную, то почему на выходе получаем значение этой переменной на экране, а не её адрес? Я думал адрес переменной это что то с большим количеством букв и цифр.
@1nfoGames
@1nfoGames 4 жыл бұрын
Ваааа, класс, наконец я понял
@cat_amanita
@cat_amanita 4 жыл бұрын
В языке Nim мне очень нехватает арифметики указателей, поэтому решил использовать Nim и Си вместе. На 90% программу напишу на Си и 10% на Nim. Эти языки идеально сочетаются, потомучто Nim транспайлится в Си и только потом компилируется. Полгода уже юзаю Nim и я им очень сильно доволен. Но мне там нехватает единственной вещи, нормальных блин указателей. Они там есть, но ими пользоваться нифига неудобно, поэтому решил переписать весь свой код на Си. Ну не весь конечно, ибо высокоуровневый код лучше оставить на языке Nim, а низкоуровневые функции переписать на Си. Т.е. переписать те участи которые требуют максимальной скорости, те участки где так и просятся указатели. Ибо я люблю арифметику указателей, хоть она и опасна. Зато позволяет достичь очень высокой скорости
@pattypr0
@pattypr0 5 ай бұрын
Я 10 лет не мог понять, что делают эти сраные указатели и как с ними работать. Но теперь как понял!
@proletarian
@proletarian 5 жыл бұрын
Указатели это гениальнейшая штука
@Nikita_Pro89
@Nikita_Pro89 2 жыл бұрын
Смотрел год назад, вообще ничего не понял. Посмотрел сегодня - понял всё))
@hannahr5037
@hannahr5037 5 жыл бұрын
Тимофей, Спасибо!
@Video-zo5oe
@Video-zo5oe 5 жыл бұрын
Хороший урок спасибо
@leoworker1752
@leoworker1752 3 жыл бұрын
Красава, спасямба бро! Все по полочкам, теперь вкурил про эти указатели. А как например обратиться к адресу путем сложения?? Ну допустим int адрес 0x1200, тогда у следующего элемента будет 0х1204 и так далее, то есть прибавляем по 4 байта. Я хочу обратиться к 20 элементу массива путем сложения, то есть 0x1200 + 4 * 20; Как вывести это?
Тип void* и интерпретация данных
13:07
Тимофей Хирьянов
Рет қаралды 41 М.
Двумерные массивы в Си: обычные и динамические
21:49
Тимофей Хирьянов
Рет қаралды 75 М.
Правильный подход к детям
00:18
Beatrise
Рет қаралды 11 МЛН
СИНИЙ ИНЕЙ УЖЕ ВЫШЕЛ!❄️
01:01
DO$HIK
Рет қаралды 3,3 МЛН
Выделение и освобождение динамической памяти в Си
27:39
Алгоритмы и структуры данных (С++), лекция №1
1:26:53
Тимофей Хирьянов
Рет қаралды 538 М.
Рекурсия. Репка и матрёшка
18:37
Тимофей Хирьянов
Рет қаралды 120 М.
Изучение Си в одном видео уроке за час!
57:15
Гоша Дударь
Рет қаралды 523 М.
Алгоритмы на Python 3. Лекция №1
1:20:50
Тимофей Хирьянов
Рет қаралды 5 МЛН
Копирование массива, реверс циклический сдвиг на Си
20:30
Минимум математики для Айтишников
16:12
Правильный подход к детям
00:18
Beatrise
Рет қаралды 11 МЛН