Variabilele de tip pointer

Слайд 2

Pointerul este o variabila care contine o adresa de memorie .

Pointerul este o variabila care contine o adresa de memorie .

Aceasta variabila contine adresa unei variabile . Avantajele utilizarii pointerilor sunt :
Ofera posibilitatea de a modifica argumentele de apelare a functiilor ;
permite o alocare dinamica a memoriei;
Pot imbunatati eficienta anumitor rutine.
Pointerii reprezinta una din cele mai puternice caracteristici ale limbajului C , dar si periculoase . Daca pointerii nu sunt initializati corect sau daca contin valori incorecte pot determina blocarea calculatorului , sau sa conduca la erori greu de depistat .
Слайд 3

Variabilele de tip pointer stochează adrese de memorie. Pot, de exemplu,

Variabilele de tip pointer stochează adrese de memorie. Pot, de exemplu,

să păstreze adrese de memorie ale altor variabile care, la rândul lor, conţin alte valori. În acest sens, un nume de variabilă referă direct o valoare, iar un pointer referă indirect o valoare. Referirea unei valori printr-un pointer se numeşte indirectare.
Pointerii ca orice alta variabila trebuie declarati inainte de a fi folositi . count
count referă direct o variabilă a cărei valoare este 7 countPtr count countPtr referă indirect o variabilă a cărei valoare este 7

Variabilele de tip Pointer :

7

7

.

Слайд 4

1 ) int *countPtr, count; Prin aceste declaraţii, variabila countPtr este

1 ) int *countPtr, count; Prin aceste declaraţii, variabila countPtr este

de tip int*, adică este pointer către o valoare întreagă. Variabila count este de tip întreg şi nu pointer la întreg. Fiecare variabilă declarată ca pointer este precedată de un asterisc *.
2 ) double *x, *y; Atât x cât şi y sunt pointeri către valori de tip double. Aceste variabile pot păstra adrese de memorie ale unor valori de tip double. Pot fi declaraţi pointeri ca să pointeze către variabile de orice tip de dată. Este indicat ca pointerii să fie iniţializaţi fie odată cu declaraţia acestora, fie printr-o instrucţiune de asignare. Un pointer poate fi iniţializat cu 0, NULL sau cu o adresă de memorie. Un pointer cu valoarea 0 sau NULL nu pointează către nicio zonă de memorie. Constanta NULL este declarată în fişierul header şi în alte câteva fişiere din biblioteca standard. Iniţializarea prin valoarea NULL este echivalentă cu iniţializarea prin valoarea 0, dar în C++ se preferă cea de-a doua variantă. Întregul 0 este convertit automat către o adresă de tipul pointerului.

Exemplu:

Слайд 5

Operatorul adresă & este unar şi returnează adresa operandului său. Exemplu

Operatorul adresă & este unar şi returnează adresa operandului său. Exemplu

int y = 5; int *yPtr; yPtr = &y; Prin ultima instrucţiune, adresa de memorie a variabilei y este încărcată în variabila pointer yPtr. În urma acestei asignări, vom spune că yPtr pointează către y.
yPtr y

Operatori pentru pointeri

.

5

Слайд 6

Exemplu: #include using std::cout; using std::endl; int main() { int a;

Exemplu: #include using std::cout; using std::endl; int main() { int a;

int *aP; a = 7; aP = &a; cout << "Adresa lui a este " << &a << "\nValoarea lui aP este " << aP; cout << "\n\nAdresa lui a este " << a << "\nValoarea lui *aP este " << *aP; cout << "\n\nOperatorii * si & sunt inversi unul altuia. “ << "\n&*aP = " << &*aP << "\n*&aP = " << *&aP << endl; cout << "\n\nAdresa lui aP este " << &aP << endl; return 0; }
Слайд 7

Acest program afişează pe ecran următorul rezultat: Adresa lui a este

Acest program afişează pe ecran următorul rezultat: Adresa lui a este

0x22ff74 Valoarea lui aP este 0x22ff74 Adresa lui a este 7 Valoarea lui *aP este 7 Operatorii * si & sunt inversi unul altuia. &*aP = 0x22ff74 *&aP = 0x22ff74 Adresa lui aP este 0x22ff70