Documente Academic
Documente Profesional
Documente Cultură
Simbol
Rol
Utilizare
Operator de
refereniere
Definirea de tipuri de
dat pointer
Operator de
refereniere
&
&a
Operator de
derefereniere
Acceseaz zona de
memorie indicat de un
pointer
*p
tip *
float*
int*
int**
p
100
104
104
a
7
106
104
Atribuire
Operatorul de atribuire =
Numai ntre pointeri de acelai tip
int *p, *q;
float *r, *s;
p = q;
r = s;
p = r;
s = q;
int *p, a;
p = &a;
float *q, b;
q = &b;
p
100
a
104
100
b
104
Incrementare / decrementare
Modificarea valorii operandului cu o unitate
int a, b, c, *p;
p = &a;
p++;
p--;
a
200
b
202
c
204
p
206
202
204
Incrementare / decrementare
Modificarea valorii operandului cu o unitate
float a, b, c, *p;
a
p = &a;
300
p++;
p--;
b
304
c
308
p
300
304
08
200
202
204
206
208
210
212
214
216
p+5
q = p + 5;
p
220
p = q - 2;
q
224
200
206
210
p+5
218
200
204
208
212
216
220
224
228
232
p+5
q = p + 5;
p
240
p = q - 2;
q
244
200
212
220
p+5
236
Operatori relaionali
Toi operatorii relaionali: <, >, <=, >=, ==, !=
Valoarea nul pentru pointeri (pointerul nul)
NULL
Funcii importante
malloc
tip *p;
p = (tip*) malloc(dimensiune);
free
free(p);
SD / SS
Heap
1000
p
100
33
104
1000
7400
7400
int a[10];
int *p;
a
200
200
202
204
206
208
210
212
214
p
220
200
p = a;
a = p;
p+5
a+5
*(a+5)
a+5 a[5]
*(p+5)
p+5 p[5]
p = a + 6;
p[0]
p[2]
216
int a[5][5];
int **p;
a
p+3
a+3
*(a+3)+2
p = a;
p[3][2]
*(*(p+3)+2)
*(p+3)
p+3
a[3][2]
*(*(a+3)+2)
*(a+3)+2
*(a+3)
a+3
???
a[3][0]
Vector dinamic
Declarare
Declarare
tip p[dim];
Alocare
-
Utilizare
p[i]
tip* p;
Alocare
p = (tip*) malloc( n * sizeof(tip));
Utilizare
p[i]
free(p);
p = (tip**) malloc(n*sizeof(tip*));
for(=0;i<n;i++)
p[i] = (tip*) malloc(m*sizeof(tip));
SD / SS
p
p+i
*(p+i)
Heap
Adresa liniei 0
Adresa liniei 1
Adresa liniei 2
Adresa liniei i
*(p+i)+j
*(*(p+i)+j)
p[i][j]
Spor la nvat!