Указатели на функции - очень мощный инструмент на языке Си, который позволяет в реальном времени перенаправлять вызовы функций. Большинство, если не все операционные системы имеют похожий механизм, как, например, печально известные функции INT 21 25/35 в старой MS-DOS, которые позволяли существовать программам TSR.
В C вы можете назначить указатель на функцию переменной и затем вызвать эту функцию через эту переменную. Функция может быть изменена либо во время инициализации на основе некоторых параметров, либо во время выполнения на основе некоторого поведения.
Вот пример:
int fn(int a)
{
...
return a;
}
...
int (*dynamic_fn)(int);
...
dynanic_fn = &fn;
...
int i = dynamic_fn(0);
Когда указатель «живет» в структуре, которую можно передать системным вызовам, это очень мощная функция, позволяющая подключаться к системным функциям.
В объектно-ориентированных языках такого же поведения можно добиться, используя отражение для динамического создания классов.