6.lucrul cu pointeri

Upload: miha-mihaela

Post on 06-Jul-2018

260 views

Category:

Documents


1 download

TRANSCRIPT

  • 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);

    &lte 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