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