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;).