Sunteți pe pagina 1din 2

Prof.

Sanda Popescu
Colegiul Naţional „Tudor Vladimirescu"

Pointeri în C++

Pointerul este o variabilă de memorie în care se memorează o adresă de memorie.


Declararea: se foloseşte tipul de dată pointer:
Tip dată *nume_variabilă
Exemplu. char *p;
int * q;
float *r;
operatorul de referinţă
Atribute ale unei variabile de tip pointer: numele (p), adresa (adr), valoarea (un număr
binar), tipul (ex: char *), lungimea (în octeţi, determinabilă cu operatorul sizeof(p))

Categorii speciale de pointeri:


i) fără tip void *p;
ii) zero - indică zona de memorie de la adresa 0. Se va folosi constanta NULL, definită
în fişierele antet stdio.h şi stdlib.h

Operatori pentru variabile de tip pointer


1. operatori specifici: & ampersand- operatorul de adresare. Operaţia se
cheamă operaţia de referenţiere a variabilei de memorie; * operatorul
de redirectare. Operaţia se cheamă operaţia de dereferenţiere a
pointerului.
inta=10, *p=&a;
cout«*p; <=> cout«a; Se afişează conţinutul variabilei a
cout«p;  cout«&a ; Se afişează o valoare hexazecimală reprezentând
adresa la care este reţinută variabila a
2. atribuirea: = (numai între doi pointeri de același tip)
3. operatori aritmetici: adunarea şi scăderea unei constante (p+k, p-k);
incrementarea şi decrementarea unui pointer (p++, p--); scăderea a doi pointeri
(p-q)
Atenţie!!! Doi pointeri nu se pot aduna!!!
Asupra pointerului fără tip nu se pot aplica operatori
aritmetici!!!
4. operatori relaţionali: ==, !=, <, >, <=, >=

1
Prof. Sanda Popescu
Colegiul Naţional „Tudor Vladimirescu"

Tablourile de memorie şi pointerii


Numele tabloului de memorie este folosit de complilatorul C++ ca o constantă
simbolică de tip adresă, reprezentând adresa primului element al tabloului.
Atenţie!!! Unei constante nu i se poate schimba valoarea, deci a=b sau a=p
greşit!!!
unde int a[20], b[20], *p;
In schimb se poate p=a  p=&a  p=a[0]
şi *p  a[0];
Operatorul [ ] (indice al tabloului)
- se aplică pe doi operanzi x( pointer) şi y(întreg)
- realizează adunarea dintre pointerul x şi constanta y
- rezultatul este valoarea indicată la adresa obţinută, adică valoarea
elementului y al tabloului de la adresa x
- x[y]  y[x]  *(x+y)
int a[20]
a[i] *(a+i) *(i+a)i[a]

Pointeri către pointeri


int a=10, *p=&a, **pp=&p;

Tipul de dată referinţă


Permite folosirea mai multor identificatori pentru aceeaşi variabilă.
Tip_dată &nume_variabilă=nume_variabilă_referită;

Operator de referenţiere
Exemplu:
int a=10, &b=a;
- cele două variabile a şi b au aceleaşi atribute (adresă, valoare, tip,
lungime) diferă doar numele
- aceeaşi adresă este identificată prin două nume
Atenţie!!!
- Tipul referinţei şi tipul variabilei referite trebuie să fie acelaşi
- referinţa trebuie iniţializată chiar în momentul declarării ei
- după ce a fost iniţializată, referinţa nu mai poate fi modificată
- nu se poate crea pointer la o referinţă
- operatorii aritmetici aplicaţi pe referinţă nu modifică adresa ci
valoarea memorată la adresa referită