Функции
Есть только две вещи, которые можно проделывать с функцией: вызывать ее и брать ее адрес. Если в выражении имя функции возникает не в положении имени функции в вызове, то генерируется указатель на функцию. Так, для передачи одной функции другой можно написать
typedef int (*PF) (); extern g (PF); extern f (); ... g (f);
Тогда определение g может иметь следующий вид:
g (PF funcp) { ... (*funcp) (); ... }
Заметьте, что f должна быть описана явно в вызывающей программе, поскольку ее появление в g(f) не сопровождалось (.