Documente Academic
Documente Profesional
Documente Cultură
Segment de cod
Segment prefix
26.05.2012 2
Operator de refereniere
&
Operator de derefereniere
*p
26.05.2012
Declarare i iniializare
int* p, a, *q; int *p; int a; int *q;
p = &a;
q = p; *q = 7; p
100 104
a
106
q 104
104
pointer: valoarea lui p: {float x,y;}* x; struct punct adresa lui p: void* p; zona ctre care indic p: valoarea ctre care indic p:
26.05.2012
p q p &p *p *p
5
Atribuire
Operatorul de atribuire = Numai ntre pointeri de acelai tip int *p, *q; float *r, *s; p = q; r = s; p = r; s = q;
26.05.2012 6
p
100 104
a
100
p
104
26.05.2012
Incrementare / decrementare
Modificarea valorii operandului cu o unitate int a, b, c, *p; p = &b; p++; p--;
a
200 202
b
204
c
206
p 202 204
26.05.2012
Incrementare / decrementare
Modificarea valorii operandului cu o unitate float a, b, c, *p; p = &b;
300
a
304
b
308
c
300
p 308 304
p++; p--;
26.05.2012
p+5 q = p + 5;
220
p
224
p = q - 2;
200 206
210
p+5
26.05.2012
10
p+5 q = p + 5;
240
p
244
p = q - 2;
200 212
220
p+5
26.05.2012
11
diferena dintre q i p
qp=5
uniti
214 216 218
p+5 q = p + 5;
220
p
224
200
210
p+5
26.05.2012
12
Operatori relaionali
Toi operatorii relaionali: <, >, <=, >=, ==, != Valoarea nul pentru pointeri (pointerul nul)
NULL
26.05.2012
13
Funcii importante
malloc tip *p; p = (tip*) malloc(dimensiune); free free(p);
26.05.2012
14
SD / SS
Heap
1000
33 p
100 104
q 7400
7400
1000
26.05.2012
15
200
202
204
206
208
210
212
214
216
p
220
200
p+5
a+5
p = a; a = p;
p = a + 6;
p[0]
p[2]
26.05.2012
16
p+3
a+3 *(a+3)+2
p = a;
p[3][2] a[3][2] *(*(p+3)+2) *(p+3) p+3 *(*(a+3)+2) *(a+3)+2 *(a+3) a+3 ??? *(*(a+3)) a[3][0]
26.05.2012
17
Declarare
tip p[dim];
Alocare
-
Alocare
p = (tip*) malloc( n * sizeof(tip));
Utilizare
p[i] -
Utilizare
p[i] free(p);
26.05.2012
18
Heap
0 1 2
m-1
p+i
*(p+i)
Spor la nvat!