Pointeri si argumente de functii
Deoarece in limbajul C transmiterea argumentelor la functii se face „prin valoare” (si nu prin referinta), funct 818e48i ia apelata nu are posibilitatea de a altera o variabila din functia apelanta. Problema care se pune este cum procedam daca totusi dorim sa schimbam un argument?
De exemplu, o rutina de sortare poate schimba intre ele doua elemente care nu respecta ordinea dorita, cu ajutorul unei functii swap. Fie functia swap definita astfel:
swap(int x, int y)
Functia swap apelata prin swap(a,b) nu va realiza actiunea dorita deoarece ea nu poate afecta argumentele a si b din rutina apelanta.
Exista insa o posibilitate de a obtine efectul dorit, daca functia apelanta transmite ca argumente pointeri la valorile ce se doresc interschimbate. Atunci in functia apelanta apelul va fi:
swap(&a,&b);
iar forma corecta a lui swap este:
swap(int *px, int *py)
|