8.4. Operatii cu pointeri
2019/03/06 in Programare in C
Asupra pointerilor se pot face diferite operatii ce vor fi precizate in continuare.
8.4.1. Incrementarea si decrementarea pointerilor
Operatorii ++ si -- se pot aplica la operanzi de tip pointer. Ei se executa altfel decat asupra datelor care nu sunt pointeri.
Operatorul de incrementare (++) aplicat unui operand de tip pointer spre tipul t, mareste adresa, care este valoarea operandului, cu numarul de octeti necesari pentru a pastra o data de tip t.
Operatorul de decrementare (--) are un efect similar, diferenta constand in aceea ca, in acest caz, valoarea operandului se micsoreaza cu numarul de octeti necesari pentru a putea pastra o dat de tipul spre care pointeaza operandul.
De exemplu, daca avem declaratia:
int *p;
atunci expresiile:
++p
si
p++
maresc valoarea lui p cu 2, deoarece o data de tip int se pastreaza pe 2 octeti.
In mod analog, expresiile:
--p
si
p--
micsoreaza valoarea lui p cu 2.
Aceste operatii sunt utile cand se au in vedere prelucrari de date de tip tablou.
Exemplu:
double tab[10];
double *p;
int i;
Fie p = &tab[i];
unde 0 < i < n-1
. Instructiunile expresie
p++;
si ++p;
maresc valoarea lui p cu 8, deci p va avea ca valoare adresa urmatoare
elemntului tab[i], adica adresa elementului tab[i+1].
In mod analog, expresiile p--;
si --p;
micsoreaza valoarea lui p cu 8, deci p va avea ca valoare adresa
elemntului precedent lui tab[i], adica adresa elementului tab[i-1].