Урок 21: Указатели на функции
В памяти живут не только переменные — код функций тоже, поэтому у функций тоже есть адреса. Указатель на функцию хранит такой адрес: int (*op)(int, int); — и скобки вокруг (*op) критичны; без них это совершенно другое объявление. После op = add; можно вызвать op(3, 4) точно так же, как обычную функц
Указатель на функцию — это кнопка быстрого набора на телефоне: сама кнопка не умеет говорить, она лишь хранит «кому звонить». Её можно назначить на маму или на пиццерию — нажатие (вызов) дозванивается до того, кто сейчас в ней сохранён.
- указатель на функцию
- Переменная, хранящая адрес функции — через неё можно вызывать и менять то, на что она указывает.
- анатомия объявления int (*op)(int, int);
- op — это указатель на функцию, принимающую два int и возвращающую int. Скобки вокруг (*op) — критически важная часть.
- имя функции как адрес
- Имя функции без скобок (как add) — это её адрес, поэтому op = add; работает.
- callback (функция обратного вызова)
- Функция, передаваемая как указатель в другую функцию, чтобы быть вызванной в нужный момент.
- компаратор qsort
- qsort получает указатель на функцию сравнения — так она может сортировать любой тип.