8/17/2019 6.Lucrul Cu Pointeri
1/12
Tipuri dinamice de date.
Pointeri1. Structura memoriei la execuția unui program2. Operatori specifci
3. Declarare şi iniţializare
. Operaţii cu pointeri
!. "eg#tura dintre pointeri şi masi$e
%. &locarea dinamic# a memoriei
'. (odifcatorulconst
8/17/2019 6.Lucrul Cu Pointeri
2/12
1. Structura memoriei laexecuția unui programS.O. aloc# o zon# de memorie programului
Segmente de memorie
Heap
Stivă
Segment de date
Segment de cod
Segment prefix
8/17/2019 6.Lucrul Cu Pointeri
3/12
8/17/2019 6.Lucrul Cu Pointeri
4/12
3. Declarare şiiniţializares"ort int *p# a# *$% s"ort int *p% s"ort int a% s"ort int *$%p &a%
$ p% *$ '%
struct punct (float x#)%* x% ++sieof ,x- .% sieof,punct-.
void* p%
pp aa $$
''
8/17/2019 6.Lucrul Cu Pointeri
5/12
Pointeri ) exemple int* nume% int a% float b%
nume&a%
nume&b% ++....
void *nume% int a% float b%
nume&a% nume&b%
int a# b# c% int *nume/% void *nume0%
b1% nume/&a% *nume/b% c*nume/2b% nume0&b%*nume0/3% ++....
c*nume0% ++....
++a.# b.# c.
8/17/2019 6.Lucrul Cu Pointeri
6/12
&tri*uireOperatorul de atri*uire =
int +p, +- /oat +r, +s
p 0 -r 0 s
p 0 r s 0 -
8/17/2019 6.Lucrul Cu Pointeri
7/12
. Operaţii cu pointeri/oat $245 /oat +p p0$
6ncrementaredecrementare
p77 p))&dunareasc#derea unui 8ntreg
p0$7! p0p)2
9ompararea a doi pointeri
p$ :00, ;0,
8/17/2019 6.Lucrul Cu Pointeri
8/12
!. "eg#tura dintre pointeri şi
masi$e $ectori
int a145 int +p
p 0 a p0a7%a 0 p
matrice
int a!5!5 int ++p
p 0 a
Bxemplifc#ri
8/17/2019 6.Lucrul Cu Pointeri
9/12
%. &locarea dinamic# amemorieiSe include
malloc.C :isual 9>
Euncţii importante void* malloc(unsigned n); void free(void* p);
<e Auncţii $oid+ calloc:unsigned nrFelem, unsigned dimFelem> $oid+ Aarmalloc:unsigned long n> $oid AarAree:$oid+ p>
BxempleG alocare $ector, matrice, comp. static)dinamic
8/17/2019 6.Lucrul Cu Pointeri
10/12
'. (odifcatorul const Pointer constant
tip +const nume
BxempluG cCar +const p0H"im*aIul 9Jp77 ))p
Pointer la o zonă de memorie constantă
tip const +nume
BxempluG cCar const +p0H"im*aIul 9J
+p0KLM
8/17/2019 6.Lucrul Cu Pointeri
11/12
BxempleG1. 6nterpretaţi urm#toarele expresiiG
a>+77p
*>+p77c>:+p>77
d>))+p
e>77+))p
8/17/2019 6.Lucrul Cu Pointeri
12/12
RăspunsGa>+77p preincrementeaza pointerul si apoi
extrage continutul
*>+p77 extrage continutul, apoi postincrementarede pointer
c>:+p>77 extrage continutul, apoi postincrementarecontinut
d>))+p predecrementare continut
e>77+))p predecrementare de adresa si
incrementarea continutului de la noua adresa
Notă: *, ++, -- au aceeaşi prioritate şi seasociaă de la dreapta spre st!nga
Top Related