Практикуем мышление указателями в C (Си) • Live coding • Refactoring
Автор: Olga Pavlova
Загружено: 2025-01-24
Просмотров: 17121
Описание:
Вот указатели в C. Они есть. Хорошо, мы потерпим. Или начнём получать удовольствие?
Попробуем перейти от мышления «оперируем данными» к мышлению «оперируем указателями». Поначалу это примерно так же больно, как думать объектами. Или — для начинающих — функциями и переменными. Потом, конечно, затягивает.
Зачем думать указателями? Например, чтобы перестать думать об утечках памяти. Или о совместимости данных при вызове функции. Или избавиться от практики создания массивов для конкретного типа данных. Да-да, совсем-совсем.
Как думать указателями? А вот как раз начнём. Пощупаем что успеем за час — и не в последний раз, конечно.
Таймлайн:
00:00 – Приветствие. О чём будет лекция
00:23 – Для кого эта лекция и зачем она нужна
01:16 – Указатели как сложная тема для новичков
02:08 – Первое визуальное представление памяти
02:41 – Историческая справка об указателях
03:56 – Основные применения указателей: память и поведение
06:32 – Поведение как ключ к абстракции
07:14 – Пример с циклом по строке
08:49 – Почему поведение и данные стоит разделять
11:36 – Зачем нужны функции-обработчики (callbacks)
12:14 – Переход к указателям на функции
13:00 – Итерация как абстракция поведения
14:27 – Обёртка над `printf` через callback
16:00 – Абстрагирование цикла
17:41 – Проблема с длиной массива
19:04 – Решения: передача длины, sentinel, структура с длиной
21:04 – Создание структуры `MetaString`
25:04 – Важность хранения указателя, а не самих данных
26:02 – Создание строки и её обёртывание в `MetaString`
28:01 – MagicRun: итерация по строке с callback'ом
30:22 – Определение типа функции (callback type)
32:49 – Тестирование MagicRun
33:56 – Ошибка компиляции из-за статической строки
35:05 – Переход к динамической строке
37:33 – Успешный запуск через `strcpy`
38:16 – Удаление лишнего: использование только итератора
39:06 – Новый callback: обработка символов как чисел
41:08 – Отделение данных от поведения: суть итератора
42:43 – Комментарии к итератору и типизации функций
44:27 – Начало ООП-подхода: указатели на поведение
45:09 – Исторический контекст появления ООП и Си
46:13 – Проблема: передача структуры vs. указателя
47:41 – Передача структуры по указателю для редактирования
50:00 – Переход к работе только с указателями
52:27 – Данные в динамической памяти, без переменных
54:05 – Управление памятью: `free` и автоматизация
56:16 – Новая задача: вынести создание `MetaString` в функцию
59:09 – Реализация `create_meta_string()`
1:01:17 – Итог: как сокрытие `malloc`/`free` облегчает работу
1:02:10 – Указатели как источник новых задач
1:03:00 – Итератор: универсальный подход
1:04:07 – Итоги: типы функций, callback, метаданные
1:05:25 – Указатель-вездеход и уровни указателей
1:06:17 – Возможности указателей: библиотеки, границы кода
1:07:03 – Повседневные задачи, которые хочется упростить
1:08:32 – Где читать: книги и потоковое изучение
1:10:02 – Трудности понимания — это нормально
1:10:56 – Финальные слова: указатели как путь к абстракции
Конспект: https://github.com/olgapavlova/lectur...
Повторяем попытку...
Доступные форматы для скачивания:
Скачать видео
-
Информация по загрузке: