Limbajul C permite nu doar referirea unor date, ci si referirea functiilor (pointeri la functii). Aceasta nu difera mult de referirea datelor, un pointer la o functie retinând adresa de memorie unde începe rutina care implementeaza functia.
Un pointer la o functie se declara în maniera:
tip_returnat (*nume_pointer)(... declaratii parametri ...);
Astfel, daca avem implementata o functie f1 si un pointer spre functie f1_ptr, secventa urmatoare va arata cum se poate realiza prin intermediul unui pointer apelul unei functii:
#include <stdio.h>
void f1(int a)
{
printf("%d\n",a);
}
void main(void)
{
void (*f1_ptr)(int);
f1_ptr=f1; /* pointerul f1_ptr va indica
spre functia f1 */
(*f1_ptr)(4); /* prin intermediul lui f1_ptr
se apeleaza functia f1 */
}
La fel ca în cazul tablourilor, putem atribui direct unui pointer
adresa functiei, fara a folosi operatorul &
(f1_ptr=f1; este identic cu f1_ptr=&f1;).