next up previous contents
Next: Folosirea neadecvata a operatiilor Up: Pointeri Previous: Pointeri si tablouri   Cuprins


Pointeri la functii

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



Cristian Gavrila 2001-10-02