A.7 Указатели на функции |
Предыдущая Содержание Следующая |
Декларация указателя на функцию состоит из объявления функции путём добавления одного уровня косвенности, то есть оператора *, к имени функции. Скобки используются для контроля приоритета:
void * f (void *); функция void * (* fp) (void *) = f; указатель на функцию
Эти указатели обычно инициализируется с помощью имён функций, которые были задекларированы ранее. В вызовах функций имена функций и указатели используются одинаково:
int x;
f (& x); использование имени функции fp (& x); использование указателя, ANSI-C (* fp)(& x); использование указателя, классика
Указатель на функцию может быть компонентом структуры:
struct Class { ... void * (* ctor) (void * self, va_list * app); ... } * cp, ** cpp;
В вызове функции -> имеет приоритет перед вызовом функции, но это не имеет приоритета над разыменовкой с помощью *, то есть во втором примере необходимы круглые скобки:
cp -> ctor ( ... ); (* cpp) -> ctor ( ... );
|
Предыдущая Содержание Следующая |