Olga Pavlova
Olga Pavlova
  • 10
  • 21 786
Практикуем мышление указателями в C (Си) • Live coding • Refactoring
Вот указатели в C. Они есть. Хорошо, мы потерпим. Или начнём получать удовольствие?
Попробуем перейти от мышления «оперируем данными» к мышлению «оперируем указателями». Поначалу это примерно так же больно, как думать объектами. Или - для начинающих - функциями и переменными. Потом, конечно, затягивает.
Зачем думать указателями? Например, чтобы перестать думать об утечках памяти. Или о совместимости данных при вызове функции. Или избавиться от практики создания массивов для конкретного типа данных. Да-да, совсем-совсем.
Как думать указателями? А вот как раз начнём. Пощупаем что успеем за час - и не в последний раз, конечно.
มุมมอง: 7 380

วีดีโอ

Как делать на C (Си) функции с произвольным количеством аргументов • Live CodingКак делать на C (Си) функции с произвольным количеством аргументов • Live Coding
Как делать на C (Си) функции с произвольным количеством аргументов • Live Coding
มุมมอง 81811 วันที่ผ่านมา
…а заодно и дебаггинг случился. Поэтому видео такое длинное. Баг нашли, всё кончилось хорошо :) Впредь урок и мне тоже - в конце концов, это же учебное видео. Теперь по сути. Функция printf() умеет принимать сколько угодно аргументов - нам тоже надо! Сделаем. А чтобы не улетать в теоретический космос, напишем за час конкретный проект: микробиблиотеку для сборки менюшек программы на C. Ну там «Н...
Ошибки как часть дизайна программы на C • Live codingОшибки как часть дизайна программы на C • Live coding
Ошибки как часть дизайна программы на C • Live coding
มุมมอง 72118 วันที่ผ่านมา
Что делать, если пользователь ввёл чушь? Как быть, если файл не существует? Ну вроде все знают, что делать и как быть - но боль не утихает. Давайте примем болеутоляющее: посмотрим на разные способы работы с ошибками, обсудим их плюсы и минусы. И покодим, конечно же.
Как писать функции, применимые к разным типам данных, или Мнимый полиморфизм в C (Си)Как писать функции, применимые к разным типам данных, или Мнимый полиморфизм в C (Си)
Как писать функции, применимые к разным типам данных, или Мнимый полиморфизм в C (Си)
มุมมอง 6K25 วันที่ผ่านมา
Вы замечали, что одним и тем же оператором * можно умножать числа самых разных типов - а вот вывод на печать требует очень разных команд форматирования (% и дальше целый зоопарк)? Не говоря уж об аргументах функций. Не говоря уж о массивах. Не говоря уж… А почему, собственно, не говоря? Давайте поговорим! И избавимся от диктата типов данных (ну, почти).
Приёмы использования ссылок на функции в C (Си) • Live codingПриёмы использования ссылок на функции в C (Си) • Live coding
Приёмы использования ссылок на функции в C (Си) • Live coding
มุมมอง 4.2Kหลายเดือนก่อน
Подкрадываемся к ООП. Начнём с простого: с эксплуатации факта, что в C функции (как и всё остальное) - это указатели. Как нам это поможет прямо сейчас захотеть и сделать что-нибудь объектно-напоминающее? И зачем? Разберёмся.
Продвинутые техники и конкретные приёмы работы в check.h • стрим, лайвкодингПродвинутые техники и конкретные приёмы работы в check.h • стрим, лайвкодинг
Продвинутые техники и конкретные приёмы работы в check.h • стрим, лайвкодинг
มุมมอง 414หลายเดือนก่อน
Основы фреймворка Check мы уже пощупали. А как конкретно с ним работать? Как писать код тестов в деталях и на конкретных задачах? Разберёмся.
Логирование в небольших проектах на С (Си) • LivecodingЛогирование в небольших проектах на С (Си) • Livecoding
Логирование в небольших проектах на С (Си) • Livecoding
มุมมอง 796หลายเดือนก่อน
Соберём простую и гибкую систему ведения логов в небольшом C-проекте. Захотим большего и обсудим, где это большее получить. Ключевые слова лекции: модули, заголовочные файлы, препроцессор, stderr, встроенные макросы, уровни логирования, проектирование архитектуры проекта. Примерное содержание лекции: - уровни логирования; - условная компиляция при логировании; - `grep` и `tail -f` для работы с ...
Использование отладчиков gdb-lldb в проектах на языке C (Си)Использование отладчиков gdb-lldb в проектах на языке C (Си)
Использование отладчиков gdb-lldb в проектах на языке C (Си)
มุมมอง 628หลายเดือนก่อน
В прямом эфире трогаем лапкой lldb - систему отладки кода. Основы, конечно. Посмотрим типовые приёмы. Всё на реальном коде. В самом начале - немного объяснений, что куда зачем.
Нюансы работы с файлами • C + Linux + MacНюансы работы с файлами • C + Linux + Mac
Нюансы работы с файлами • C + Linux + Mac
มุมมอง 8642 หลายเดือนก่อน
В системе Linux всё - файл. Что бы это значило? А вот как раз и разберёмся. Пощупаем высокоуровневую и низкоуровневую работу с файлами, посмотрим на неожиданно-тоже-файлы, а может быть, даже что-то успеем измерить. Всё - на живом коде.
Основы модульного тестирования и BDD • Введение в C-фреймворк Check • Стрим, лайвкодингОсновы модульного тестирования и BDD • Введение в C-фреймворк Check • Стрим, лайвкодинг
Основы модульного тестирования и BDD • Введение в C-фреймворк Check • Стрим, лайвкодинг
มุมมอง 1.1K2 หลายเดือนก่อน
Стартовая информация для тех, кто изучает программирование, начал с языка C и добрался до словосочетания «юнит-тесты». По верхам знакомимся с теоретической частью: TDD, BDD, xUnit, Check. Быстро кодим базовый пример C Check. А потом ещё один, посложнее. Код и конспект: Github → olgapavlova → lectures (когда можно будет, вставлю и ссылку).

ความคิดเห็น

  • @requ1em939
    @requ1em939 37 นาทีที่ผ่านมา

    Ждем продолжения. Отличный формат получился.

  • @sergeigarbar1896
    @sergeigarbar1896 2 ชั่วโมงที่ผ่านมา

    Окей гугл. Можно ли считать указателем в Си, тоже что адрес ячейки в экселе? то есть что бы автоматизировать какую то формулу, я пишу не 6, адрес ячейки АБ 77, в которой другая формула вычилсяет это 6. а потом оно само изменится на 284. если да, то ок, я пошёл спать. если нет - ну я не понял, почему char * data, char * c, и как мы зоздав копию цикла получили код ANSI. прошёл курс C, полчил кол, не понял зачем городить конструкции и почему запрет на что ли бо в main, кроме вызова функции, обственоо после это непонимания перестал понимать остаьное. кенрнигана и ричи пока прочитал предисловие и тираж ))) о вобще - переменная, она на то и переменная, а не постоянная. фор от ноля до икса. зачем указатель на икс. for i = 0; i < lenght of iks

  • @VasiliyLomovoy
    @VasiliyLomovoy 6 ชั่วโมงที่ผ่านมา

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

  • @ВладимирВасильев-с1е
    @ВладимирВасильев-с1е 11 ชั่วโมงที่ผ่านมา

    Интересный материал!

  • @tsvigo11_70
    @tsvigo11_70 16 ชั่วโมงที่ผ่านมา

    1. Однако в большинстве случаев разница минимальна, особенно если компилятор хорошо оптимизирует код. Если в коде нет явного узкого места, связанного с использованием памяти или копированием, указатели могут не давать значительного выигрыша. ЧатЖипити. 2. Утечки памяти - их нет так как одно выделение new в шаблоне компилятора - он и освобождает.

    • @olgapavlova
      @olgapavlova 15 ชั่วโมงที่ผ่านมา

      2. Если есть доступ к шаблону компилятора (конкретно у слушателей этого стрима - нет).

    • @tsvigo11_70
      @tsvigo11_70 15 ชั่วโมงที่ผ่านมา

      @@olgapavlova , я имею в виду шаблонный файл компилятора который он автоматически генерирует для нового проекта.

    • @olgapavlova
      @olgapavlova 12 ชั่วโมงที่ผ่านมา

      @ Спасибо за мысли. Мне надо подразобраться - и если тут будет что, рассказать. С утечками у многих трудности.

  • @WraithMyNight
    @WraithMyNight 20 ชั่วโมงที่ผ่านมา

    Е**аать Серсея Ланнистер учит зелень языку С, наконецто топовый контен, это билайк подписка

  • @sralin
    @sralin 23 ชั่วโมงที่ผ่านมา

    прекрасные лекции, прекрасный программист, жаль роzzиянка

  • @СтороннийНаблюдатель-ч6ф
    @СтороннийНаблюдатель-ч6ф วันที่ผ่านมา

    Указатель на указатель на массив указателей на char! Как тебе такое Илон Маск?

  • @ancient-raccoon
    @ancient-raccoon วันที่ผ่านมา

    Спасибо! Нужно попасть на стрим, пока продолжу в записи

  • @UraniumAgent
    @UraniumAgent วันที่ผ่านมา

    Спасибо за ваши видео!

  • @ancient-raccoon
    @ancient-raccoon วันที่ผ่านมา

    Спасибо за видео, жаль мало. Но впереди ещё есть несколько видео))

  • @RuslanOmalaev
    @RuslanOmalaev วันที่ผ่านมา

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

  • @Apaximatic_Play
    @Apaximatic_Play 2 วันที่ผ่านมา

    потом гляну, не удаляйте видос)

  • @Giorgighurtskaia9204
    @Giorgighurtskaia9204 2 วันที่ผ่านมา

    Моя сестра была рада, что эта женщина рассказала ей об этом.

  • @tandomrandom
    @tandomrandom 2 วันที่ผ่านมา

    average russian mother

  • @yakomisar
    @yakomisar 2 วันที่ผ่านมา

    Ольга, спасибо, скиньте свой конфиг на vim

    • @olgapavlova
      @olgapavlova 2 วันที่ผ่านมา

      В следующих сериях.

  • @dmitrydalidovich1753
    @dmitrydalidovich1753 2 วันที่ผ่านมา

    1 Хочу поблагодарить за такой поток, как по мне, такой контент имеет оч высокий потенциал, хочется поддержать вас, Ольга, продолжать развиваться 2 Я понимаю, что есть некоторый лоск в live coding, но получился неловкий кич. Лучшая импровизация, которая заранее отрепетирована. А то получилась структура которая хранит size, который получается из strlen и возникает логичный вопрос а сразу strlen нельзя? Можно заранее и продумать и написать код, который потом повторить на потоке, как некоторые докладчики делают, когда с ноля накидывают фреймворк или библиотечку, показывая какую-то идею 3 Есть вопросики по поводу ЦА этого потока, с одной стороны, вроде бы речь о базовых вещах, с другой предполагается, что зритель уже умеет оперировать и звёздочкой и амперсандом 4 Неадекваты всегда будут приходить на поток со своими неадекватными вбросами, и хорошо бы научиться реагировать на них иронично а иногда и самоиронично, а не теряться и выпадать на минут 10 5 Это конечно не моё дело, прошу за это прощения, но не хотели бы вы добавить себе на полку пару книг про зажимы в теле(в частности, челюстной зажим) и про проживание эмоций(модный эмоциональный интеллект)

    • @olgapavlova
      @olgapavlova 2 วันที่ผ่านมา

      Ой вы что-то расписались :) Смотрите дальше, комментируйте по сути дела, ориентируйтесь на то, чтобы ваши комментарии были полезны другим слушателям.

    • @neocortexlab
      @neocortexlab 2 วันที่ผ่านมา

      Я бы рекомендовал Вам, Дима, другую книгу или видео лекцию. Про то, что "каждый критик - г-ноед". Там очень хорошо разбирается психическая суть натуры критиканов

    • @dmitrydalidovich1753
      @dmitrydalidovich1753 วันที่ผ่านมา

      @@neocortexlabя вижу вы её если не написали, то прочитали до дыр

  • @twetowncity
    @twetowncity 2 วันที่ผ่านมา

    Здравствуйте. У вас есть в планах лекция по динамической распределении памяти?

    • @olgapavlova
      @olgapavlova 2 วันที่ผ่านมา

      Да, и вряд ли одна. Тема-то ого-го!

  • @КимЧенОрк
    @КимЧенОрк 2 วันที่ผ่านมา

    "ничего не продаю" - идеальные ютуб ролики

  • @cordestandoff2358
    @cordestandoff2358 2 วันที่ผ่านมา

    Задача со "звездочкой" - автоFREE, не ясно как решить :) Рассмотрев раст, можно сказать, что ты четко определяешь lifetime у каждой переменной в своем коде, круто. В си если начать делать абстракции в стиле монолита, я бы начал делать аналог malloc, который возвращает не указатель, а абстрактный "объект" по вашим словам. Как определить lifetime? Ну, я не знаю идеально о работе сборщика мусора, но предполагаю некоторые вещи. Давайте заведем для каждого объекта поле size_t ptr_count, и скажем, каждую "проверку" сборщика посмотрим на все "объекты", и если у них 0 ссылок, и закончился НЕИЗВЕСТНЫЙ lifetime, то удалим. Хорошо, но как определить lifetime? Как вариант - у каждой переменной сделать lifetime буквально в теле функции, а если она понадобится позже, то заведем на нее указатель и вернем в функцию выше. Тут возникает проблема - нельзя обойтись без вызова clean_all_useless() в каждом теле каждой функции. Эту проблему у себя в голове на чертеже я еще не решил! :(

    • @cordestandoff2358
      @cordestandoff2358 2 วันที่ผ่านมา

      И хотелось бы оставить еще один комментарий. Вам не кажется, что если начать модерироавть чат, то он совсем опустеет? Да и в целом, каждый чат на стримах содержит в основном мусор. Даже у TSoding в основном мусор, хотя казалось бы, если много подписчиков, то умных тоже должно быть приемлемое количество...

  • @DuplexKrokodile
    @DuplexKrokodile 2 วันที่ผ่านมา

    Почему-то ютуб мой комментарий удаляет. Хотел поделиться как я пытался в стиле ооп на си писать, использвать обединение и войд звездочка😮😢

    • @olgapavlova
      @olgapavlova 2 วันที่ผ่านมา

      Что ж вы там такое написали, что даже TH-cam испугался :)

  • @Константин-ю5у2м
    @Константин-ю5у2м 2 วันที่ผ่านมา

    Что будет если вызвать metastr_create так: metastr_create("abcbnbnb")? Наверное надо маллок("фывфвфйв") делать внутри metastr_create иначе в структуре данные будут указывать кудато на стек и соответственно затрутся.

    • @olgapavlova
      @olgapavlova 2 วันที่ผ่านมา

      Да, именно так. Стандартный путь: обвешанный разными свистелками malloc() внутри функции создания [объекта], и наружу отдавать указатель.

  • @mihaelbablovich9463
    @mihaelbablovich9463 2 วันที่ผ่านมา

    Собрались мазохисты кайф ловить 😁

  • @onionsnp
    @onionsnp 2 วันที่ผ่านมา

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

    • @DuplexKrokodile
      @DuplexKrokodile 2 วันที่ผ่านมา

      Ну и как у вас успехи?

    • @DIGmbl
      @DIGmbl 13 ชั่วโมงที่ผ่านมา

      @@DuplexKrokodile, лучше его не тревожить: это мастер по раздаванию советов 😂

  • @BlackJack-ko6to
    @BlackJack-ko6to 2 วันที่ผ่านมา

    Более того, сам язык С был придуман этническими украинцами, бывшими жителями львова Богданом Керничуком и Денисиком Реченко. А язык С++ придумал житель ивано-франковска Богдан Струпенко.

    • @olgapavlova
      @olgapavlova 2 วันที่ผ่านมา

      Узбекистан, кстати, готов оспорить первенство. Подробней тут: ru.wikipedia.org/wiki/Ющенко,_Екатерина_Логвиновна

    • @olgapavlova
      @olgapavlova 2 วันที่ผ่านมา

      Кстати, спасибо за идею! Купила только что знаменитый учебник «Элементы программирования» - если там к 2025 году осталось о чём поговорить, кроме истории, то и поговорим. Слава букинистам.

    • @twetowncity
      @twetowncity 2 วันที่ผ่านมา

      Когда хотел выпендриться, но не получилось)

  • @SerjCrimea
    @SerjCrimea 2 วันที่ผ่านมา

    Здравия Ольга. Спасибо за уроки, знания, по Си. Мне очень понравился язык, его логика, близкая к логике процессора. И конечно быстродействие. С++ не хочу учить, ибо это уже не ЯП а разбирание, запоминание названий функций, написанных иными людьми с своим подходом. ООП сильно раздувает проекты, где 99% функций объектов, классов, не используется :( Но в программу весь этот мусор компилируется. Да, указатели не обычны для моего мозга :) Не могу привыкнуть что переменная указатель, хранит адрес а не значение, как в обычных переменных. Не очень комфортно в Си под Виндой программы писать, консольные. Но Си прекрасен! Когда я в 1995 году, начинал программировать, с изучением Си произошла нелепая ситуация :) В то время, популярны были Паскаль и Си. Я пошел в библиотеку, взял огромную книгу с дискетой, на которой был редактор для ПК ;) И программа "Hello Word!" не компилировалась =)))) В последствии я понял что проблема была в путях редактора кода :) На дискете был не инсталлятор. Так я стал учить Паскаль, Делфи позже. Но Борланд "пал" и Паскаль с Делфи тоже.

    • @Константин-ю5у2м
      @Константин-ю5у2м 2 วันที่ผ่านมา

      А я примерно в те же года, может чуть раньше, купил книжку по бейсику и программировал просто на бумажке.

  • @roverzaken9943
    @roverzaken9943 3 วันที่ผ่านมา

    Не знаю почему и как, но ютуб периодически подсовывает видео этого автора и я наконец кликнул. Это прекрасно, смотрим, изучаем.

  • @mgcmsn
    @mgcmsn 3 วันที่ผ่านมา

    Я из нью-эйдж поколения разработчиков которым одновременно и легче и труднее. Легче потому что в современных языках сложные вещи где можно легко ошибиться заботливо убраны в пакет с каким-нибудь говорящим названием, например unsafe. В Go и Rust например так сделано. Язык на начальных уровнях выглядит очень простым. Труднее становится когда приходится вылезти из этой песочницы по какой-то причине, например из-за проблемы производительности при высокой нагрузке на приложение. Тут же оказывается что на самом то деле всё гораздо интереснее и страшнее устроено. Вот я заметил паттерн что какую подкапотную механику языка ни копни, неизменно находишь лекцию об этом с конференции по языку С, где умные люди рассказывают что там на самом деле происходит с машиной и как с этим быть. Спасибо за ваши лекции!

  • @CodeNSell
    @CodeNSell 3 วันที่ผ่านมา

    Только начал Си, вроде как базу закрыл и тут наткнулся на этот канал, что то на интересном рассказываете

  • @Paramore1999
    @Paramore1999 3 วันที่ผ่านมา

    Даа..помню, как они меня парили) Мне бы тогда это видео! Нужная тема. Спасибо!

  • @PavelOmelchenko
    @PavelOmelchenko 3 วันที่ผ่านมา

    чатгпт надо оставить джаваскриптизерам

    • @olgapavlova
      @olgapavlova 3 วันที่ผ่านมา

      С умом и осторожно даже из ChatGPT можно пользу извлечь.

    • @arzamas1988
      @arzamas1988 2 วันที่ผ่านมา

      И отупеть. Свою нейронку в голове надо развивать.

    • @neocortexlab
      @neocortexlab 2 วันที่ผ่านมา

      ​@@arzamas1988чиво??? Ково,?? Сам понел шо напесал????

  • @m_stifeev
    @m_stifeev 3 วันที่ผ่านมา

    Здравствуйте. Лекция получилась интересная. Но один вопрос из чата так и остался без ответа. Что всё-таки с зарплатами программистов на си?

    • @olgapavlova
      @olgapavlova 3 วันที่ผ่านมา

      Ну почему же без ответа. Ответ всё тот же: мне эта тема не интересна, а кругом полно желающих её обстоятельно обсудить. Их спрашивать точно эффективней.

  • @Carpet-Shark
    @Carpet-Shark 3 วันที่ผ่านมา

    Огонь! Очень интересно! С нетерпением жду следующий стрим, особенно реализацию смарт-поинтеров!

  • @serb1146
    @serb1146 3 วันที่ผ่านมา

    Разобрался с указателями на С только когда окунулся в ассемблер. И стал мыслить терминами: "передвинуть" указатель, взять значение по этому адресу и т.д. Язык С открылся с другой строны...

  • @sunofabeach9424
    @sunofabeach9424 3 วันที่ผ่านมา

    учите раст бога ради

    • @ted_res
      @ted_res 3 วันที่ผ่านมา

      Что это поменяет?

    • @sunofabeach9424
      @sunofabeach9424 3 วันที่ผ่านมา

      @@ted_res необходимость ловить висящие указатели???

    • @ted_res
      @ted_res 3 วันที่ผ่านมา

      ​@ это абстракция, не более. Раст лишь позволяет компилятору лучше понимать жизненный цикл памяти. Это круто, конечно. Но суть указателей не меняет. Вообще, чем больше знаешь языков, тем меньше увлекают все эти свистелки, потому что плюс-минус всё одно и то же. Машина Тьюринга, память, ввод-вывод.

    • @sunofabeach9424
      @sunofabeach9424 3 วันที่ผ่านมา

      @@ted_res в случае с С к этим трем базовым компонентам регулярно добавляется четвертый - segfault

    • @sunofabeach9424
      @sunofabeach9424 3 วันที่ผ่านมา

      @ и да, раст как раз меняет суть указателей. указатель теперь указывает не на буквально адрес памяти, а на владение объектом. то есть то, в какой момент он будет прибран

  • @alexandr_freedman
    @alexandr_freedman 3 วันที่ผ่านมา

    О, алгоритм youtube сработал удивительным образом и я случайно попал к вам. К моей радости) Вы правы, в глазах "кошмар и ужас", но да ладно, трудности от непонимания происходящего на видео закаляют характер. Пы сы: программирование для меня "сложно,сложно непонятно". Надеюсь со временем убрать эту досадную неоплошность

    • @olgapavlova
      @olgapavlova 3 วันที่ผ่านมา

      Точно уберёте, если не будете останавливаться. Успехов! Если готовы всерьёз тратить время - очень рекомендую лекции Тимофея Хирьянова. Примерно любые, они все для новичков и очень доброжелательные. На TH-cam есть.

  • @aakh3500
    @aakh3500 3 วันที่ผ่านมา

    Попытка сделать рассказ - аналог того о чем писали банда 4х в своей книжке по паттернам ооп.

  • @ookhands3843
    @ookhands3843 3 วันที่ผ่านมา

    Работа с указателями в си - это задача со звездочкой)

  • @ВладиславГришин-ш7ш
    @ВладиславГришин-ш7ш 3 วันที่ผ่านมา

    запишите видос про представление данных на Си

  • @cretins2012
    @cretins2012 3 วันที่ผ่านมา

    Можно было malloc и не использовать, название переменной массива в C - это уже указатель на первый элемент, нужно было просто знак '&' убрать, а так вы пытались получить указатель на указатель

    • @olgapavlova
      @olgapavlova 3 วันที่ผ่านมา

      Я бы даже сказала, что и нужно. Но в демонстрационной ситуации есть нюансы.

    • @Константин-ю5у2м
      @Константин-ю5у2м 2 วันที่ผ่านมา

      @@olgapavlova Я так понял что это было поводом ввести malloc в повествование.

    • @olgapavlova
      @olgapavlova 2 วันที่ผ่านมา

      @ Скорее саму идею ненужности переменных там, где достаточно указателей.

  • @РоманНикулин-о4б
    @РоманНикулин-о4б 3 วันที่ผ่านมา

    суперская лекция, будет ли в будущем затронута тема с ABI?

    • @olgapavlova
      @olgapavlova 3 วันที่ผ่านมา

      Точно да - и точно не в ближайшие два месяца.

  • @handlewithoutsuitcase
    @handlewithoutsuitcase 3 วันที่ผ่านมา

    Ольга, если позволите - конструктивная просьба. Если не затруднит - не могли бы Вы принять какую-то Конвенцию Именования? Иногда трудно понять что за чем хранится. Скажем, было бы здорово, если бы p_str соответствовал &str, и чуть меньше аббревиатур - хотя бы в рамках обучающих примеров. Спасибо за Вашу работу!

    • @olgapavlova
      @olgapavlova 3 วันที่ผ่านมา

      Это будет непросто, но я постараюсь :) Спасибо за предложение!

  • @MSaidu-sj6vx
    @MSaidu-sj6vx 3 วันที่ผ่านมา

    Таак... Подошли структурно-адресные измывательства мозговых извилин... Полезные упражнения!!!

  • @_dzen_tv_
    @_dzen_tv_ 4 วันที่ผ่านมา

    Указатель в общем виде именно указывает на адрес в памяти. Об этом свидетельствует размер указателя. Например в системе x86 любой указатель будет равен 4 байта. В x86 используется плоская модель памяти. Но в системе где шина данных имеет одну ширину, а шина команд другую указатели будут иметь разную размерность. Так если указатель это адрес то в чём особенность? У указателя есть тип и поведение соответствующее типу. Например указатель на int * pi при pi + 1 будет прибавлять к адресу размер int, а указатель на char * pc при ср + 1 будет прибавлять 1(размер байта). int i; char c; int * pi = &i; char * pc = &c; printf("pi : 0x%X, 0x%X ", pi, pi+1); printf("pc : 0x%X, 0x%X ", pc, pc+1); напечатает pi : 0xED7F7F2C, 0xED7F7F30 pc : 0xED7F7F2B, 0xED7F7F2C

    • @olgapavlova
      @olgapavlova 4 วันที่ผ่านมา

      Всё так. Исхожу из того, что это слушателям уже известно.

    • @_dzen_tv_
      @_dzen_tv_ 3 วันที่ผ่านมา

      @@olgapavlova Я полагал что показано на стриме это и есть обыденность.

    • @olgapavlova
      @olgapavlova 3 วันที่ผ่านมา

      @ А у всех же разная.

    • @ted_res
      @ted_res 3 วันที่ผ่านมา

      4:33 ну так автор так и сказала: "давайте устроим арифметику указателей". Это ровно то, о чём вы написали. С подтекстом, что всё это и так понятно, а теперь давайте развлекаться с функциональщиной :)

    • @_dzen_tv_
      @_dzen_tv_ 3 วันที่ผ่านมา

      @@ted_res Ну это прозвучало в контексте истории указателей как и фраза "указатели слишком многозначные" 1:28.

  • @yavbvb123
    @yavbvb123 4 วันที่ผ่านมา

    Ольга, вы молодец! Хорошее дело делаете!

  • @VladimirBokov
    @VladimirBokov 4 วันที่ผ่านมา

    Очень интересный заход на тему. Это почерпнуто из книжки или дамп мозга после наложения опыта? И еще: как будто видео обрывается без вывода. А вывод что обычный пойнтер это имплицитный, универсальный, встроенный metastr?

    • @olgapavlova
      @olgapavlova 4 วันที่ผ่านมา

      Микс того-сего по мотивам и книжек, и практики. Я усилием воли заставляю себя затыкаться в первый же удобный момент после часа вещания :) Поэтому внезапно, да.

  • @alexandernaumochkin
    @alexandernaumochkin 4 วันที่ผ่านมา

    “For some reason most people seem to be born without the part of the brain that understands pointers.”, Joel Spolsky, 2006.

    • @olgapavlova
      @olgapavlova 4 วันที่ผ่านมา

      У всех есть свои белые пятна. Но у каждого должен быть шанс.

  • @DruiD478
    @DruiD478 4 วันที่ผ่านมา

    Здравствуйте, спасибо за видео‼️🫡 Многие не рекомендуют для начинающих книгу: Язык программирования Си, Брайана Кернигана, Денниса Ритчи, я как начинающий с ними согласен🤔 Интересно услышать иное мнение.

    • @olgapavlova
      @olgapavlova 4 วันที่ผ่านมา

      Вы знаете, я тоже с грустью на неё смотрю. С одной стороны, прочесть надо, чего б не прочесть, она маленькая и простая. С другой - хоть это монстры и корифеи, но так, как они, сейчас код уже не пишут. Особенно так не пишут при освоении азов программирования. А сейчас C - во многом учебный язык. И да, сильно подозреваю, что манера Кёрнигана-Ритчи писать код собьёт новичка с толку. Эдакое «всё лучшее сразу», посильное только людям с очень прокачанными навыками работы в знаковых системах. Резюме: если не нравится - бросайте немедленно, можно обжечься об эту книгу. Если нравится - вреда не будет.

    • @alexandernaumochkin
      @alexandernaumochkin 4 วันที่ผ่านมา

      @@olgapavlova Ритчи не пишет код, поскольку уже 13 лет как почивает на небесах. А Керниган пишет код прямо сегодня, поддерживая, в частности, всему миру известный awk (в названии которого «K» - именно потому, что Керниган).

    • @olgapavlova
      @olgapavlova 4 วันที่ผ่านมา

      @ Речь же про код в книжке. Его уже никто не пишет.

    • @DruiD478
      @DruiD478 4 วันที่ผ่านมา

      ​@@olgapavlova не зашла книга, не дорос до неё походу, пока читаю сборник Андрея Столярова 2 - е издание и то не весь, пропустил пока часть про Assembler, по Паскалю прошёлся и то бегло из уважения к автору🤔

    • @alexandernaumochkin
      @alexandernaumochkin 4 วันที่ผ่านมา

      @@olgapavlova Очень даже пишут. И не студенческие зачёты, а огромные проекты. Например, целые операционные системы :) Из доступно изложенных книг по С могу порекомендовать Стивена Прата (Stephen Prata). Да даже приснопамятный Герберт Шилдт по С написал в своё время отличную книгу. И он же умудрился написать ужасную книгу по С++ :)

  • @КузьмаМазуренко
    @КузьмаМазуренко 6 วันที่ผ่านมา

    Очень интересно и удивительно актуально, вне зависимости от уровня. Спасибо огромное!

  • @enginetica
    @enginetica 8 วันที่ผ่านมา

    Спасибо! Такой вопрос: как программно узнать в Си, что в процессе вычислений произошло переполнение (вышли за разрядную сетку)? Например, есть байтовая переменная в 8 бит со значением, например, 250 и другая такая же переменная со значением, например, 2 и мы перемножаем эти переменные и результат помещается в переменную того же типа. При этом на нашей платформе 8 бит это максимум, т.е. не можем хранить результат, скажем, в типе, размером 16 бит. Есть ли какой-то флаг, чтоб определить переполнение? Указанные типы исключительно для примера и на их месте могут быть типы 32 или даже 64 бита.

    • @olgapavlova
      @olgapavlova 8 วันที่ผ่านมา

      Интересный вопрос, спасибо. Я бы начала поиски удачного решения с простой практики: совершить обратную операцию и посмотреть, получилось ли исходное число (возможно, с допуском). Очевидно, что если не получилось, то имеем переполнение. Посмотрю, есть ли решения получше.

    • @enginetica
      @enginetica 7 วันที่ผ่านมา

      @@olgapavlova В случае '+' и '-' обратная операция для каждой будет давать исходную цифру (число). Для '*' обратная операция '/' позволит выявить, но деление не лучшая операция для этих целий. У многих процессоров и микроконтроллеров есть аппаратный флаг переполнения, но видимо, кроме как ассемблерной вставкой его не получить, а это не красиво смотрится (но эффективно с позиции количества инструкций и скорости). Красивого минималистичного решения не знаю.

    • @olgapavlova
      @olgapavlova 7 วันที่ผ่านมา

      @@enginetica То-то и оно, что в два прыжка не получится. Короче, сделала себе закладку покопаться.