11. Указатели на функции в C: от qsort до полиморфизма | Программирование микропроцессоров
Курс "Программирование микропроцессоров" специальность 09.03.04 "Программная инженерия", 1 курс. Про подготовку программистов в Институте iSpring здесь: https://ispring.institute/software-engineering В этой лекции продолжаем изучение продвинутых возможностей языка C и разбираемся с одним из самых важных механизмов — указателями на функции. Сначала мы рассмотрим практическую задачу сортировки массивов и увидим, почему жёсткое связывание алгоритма с конкретной логикой сравнения приводит к дублированию кода. Затем научимся передавать функции как параметры, создавать универсальные алгоритмы и использовать стандартную функцию qsort. После этого перейдём к более серьёзным примерам: построению абстракций ввода-вывода с использованием указателей на функции, созданию универсального интерфейса потоков данных и реализации собственных источников данных, работающих с памятью и файлами. Во второй части лекции покажем, как с помощью opaque types, структур и таблиц виртуальных функций можно реализовать основные идеи объектно-ориентированного программирования на языке C. Мы создадим иерархию фигур, научимся скрывать реализацию модулей, хранить объекты разных типов в одной коллекции и реализуем полиморфизм без поддержки классов со стороны языка. В лекции рассматриваются: • указатели на функции и их синтаксис; • передача функций в качестве аргументов; • компараторы и универсальные алгоритмы сортировки; • стандартная функция qsort; • типичные ошибки при работе с указателями на функции; • абстракция потоков данных и единый интерфейс ввода-вывода; • хранение поведения внутри структур; • opaque types и сокрытие реализации; • таблицы виртуальных функций (vtable); • реализация полиморфизма и ООП-подходов на языке C. Лекция будет полезна студентам, изучающим язык C, системное программирование, разработку встроенных систем и внутреннее устройство объектно-ориентированных языков программирования. Полезные ссылки Слайды и задачи по этому курсу: https://github.com/alexey-malov/mpp Поддержать меня на Boosty: https://boosty.to/vivid-bw Тайм-коды: 0:00 Наивный подход к сортировке массива и его проблемы 4:25 Указатели на функции 16:11 Абстрагируем потоки данных 27:18 Реализуем ООП-подход на языке C
Название:
11. Указатели на функции в C: от qsort до полиморфизма | Программирование микропроцессоров
Категория:
Разное