Функция располагается в памяти по определенному адресу, который можно присвоить указателю в качестве его значения. Адресом функции является ее точка входа. Именно этот адрес используется при вызове функции. Так как указатель хранит адрес функции, то она может быть вызвана с помощью этого указателя. Указатель на функцию можно передавать другим функциям в качестве аргумента.
Объявление указателя на функцию идентично объявлению функции:
typefunc(params);type(*pfunc)(params);
Пример:
voidsort(double*v,size_tlength);// объявление функцииvoid(*pfunc)(double*,size_t);// объявление указателя на функцию
Для использования указателей на функцию удобно объявлять тип указателя на функцию при помощи ключевого слова typedef:
Указатели на функцию используются в случае организаций функций в виде таблиц (списков), а также для передачи их в качестве параметров функции. Один из наиболее распространённых примеров использования указателей на функцию является организация событийного программирования (связывание событий от элементов управления с функциями):