next up previous contents
Next: Pointeri si tablouri Up: Pointeri Previous: Operatii cu pointeri   Cuprins


Pointeri ca argumente ale functiilor

În C, transmiterea parametrilor la functii se face "prin valoare", singurul rezultat vizibil în exterior fiind valoarea pe care o returneaza functia. Pentru ca o functie sa poata returna mai multe valori sau pentru ca modificarile asupra parametrilor sa se propage în exteriorul functiei, se folosesc pointeri. Acest concept este ilustrat de urmatoarea analogie: Presupunem ca se întâlnesc doua persoane A si B, A poate doar sa vorbeasca, iar B poate doar sa asculte. Cum poate B sa îi transmita informatii lui A ? Simplu: A îi spune: "Lasa raspunsul tau în cutia postala numarul x". Astfel, în momentul când se transmite un pointer catre o functie, functiei i se "comunica" adresa variabilei transmise ca parametru, putând astfel face modificari asupra acelei variabile.

În exemplul urmator se arata cum functia inc_contor va modifica valoarea variabilei contor.

#include <stdio.h>

void inc_contor(int *contor_ptr)
{
  (*contor_ptr)++;
}

void main(void)
{
  int contor = 0;

  while (contor<10)
    inc_contor(&contor);
  printf("contor: %d\n",contor);
}
Din functia main se transmite spre functia inc_contor nu variabila care trebuie incrementata, ci adresa sa. Functia inc_contor primeste ca parametru nu un întreg, ci un pointer la un întreg. Astfel, cunoscând adresa variabilei contor, functia poate modifica valoarea acelei variabile, referind-o indirect prin intermediul pointerului.


next up previous contents
Next: Pointeri si tablouri Up: Pointeri Previous: Operatii cu pointeri   Cuprins
Cristian Gavrila 2001-10-02