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].

8.4.2. Adunarea si scaderea unui intreg dintr-un pointer