Sunteți pe pagina 1din 4

LI MBAJ E DE PROGRAMARE

LABORATOR 10

I . ASPECTE TEORETI CE

Poi nt er i

Dupa cum se st i e, un pr ogr am i mpr euna cu dat el e sal e est e past r at i n memor i a
cal cul at or ul ui .
Memor i a RAM ( Random Access Memor y) est e o memor i e cu acces al eat or si car e, l a
ni vel ul cel mai i nf er i or , est e al cat ui t a di n bi t i ce memor eaza o val oar e di n
doua, i nt er pr et at e de obi cei ca 0 si 1, at at t i mp cat cal cul at or ul est e i n
f unct i une.
Opt bi t i f or meaza un oct et , doi oct et i al cat ui esc un cuvant , i ar pat r u oct et i un
cuvant l ung.

Un poi nt er est e o var i abi l a car e cont i ne adr esa al t ei var i abi l e, sau al t f el zi s
r epr ezi nt a o var i abi l a car e past r eaza adr esa unei dat e, i n l oc de a memor a dat a
i nsasi .

Poi nt er i i se ut i l i zeaza pent r u a f ace r ef er i r e l a dat e cunoscut e pr i n adr esel e
l or .


1. Decl ar at i a de poi nt er si t i pul poi nt er

Un poi nt er se decl ar a ca or i ce var i abi l a, cu pr eci zar ea ca numel e est e pr ecedat
de car act er ul *.
I n gener al , un poi nt er se decl ar a pr i n:

t i p *nume_p;

ceea ce i nseamna ca nume_p est e un poi nt er car e poi nt eaza spr e o zona de memor i e
ce cont i ne o dat a de t i pul t i p.

Compar and decl ar at i a de mai sus cu cea uzual a:

t i p nume;

put emconsi der a ca t i p* di nt r - o decl ar at i e de poi nt er i r epr ezi nt a t i p di nt r - o
decl ar at i e obi snui t a.
Asadar , put emspune ca t i p* r epr ezi nt a un t i p nou, t i pul poi nt er . Acest t i p se
spune ca est e t i pul poi nt er spr e t i p.

Pr eci zar e
Ami nt i mf apt ul ca:
* - > oper at or ul de i ndi r ect ar e. Expr esi a car e- l ur meaza est e un poi nt er i ar
r ezul t at ul est e o l val oar e.
& - > oper at or ul de obt i ner e a unui poi nt er . Oper andul est e l val oar e i ar
r ezul t at ul est e poi nt er .

Daca avemdecl ar at i i l e:

i nt x;
i nt *p;
f l oat y;

at unci at r i bui r ea:

p = &x;

est e cor ect a, i n t i mp ce:

p = &y;

nu est e cor ect a, deoar ece p poat e cont i ne numai adr ese de zone de memor i e i n
car e se past r eaza dat e de t i p i nt .
Daca exi st a decl ar at i a:

f l oat *q;

at unci se poat e f ol osi at r i bui r ea:

q = &y;


Exi st a cazur i i n car e se dor est e ca un poi nt er sa f i e ut i l i zat cu mai mul t e
t i pur i de dat e.
I n acest caz, l a decl ar ar ea l ui nu put emspeci f i ca un t i p. Aceast a se r eal i zeaza
f ol osi nd cuvant ul voi d:

voi d *nume_p;

Exempl u:

i nt x;
f l oat y;
char c;
voi d *p;
. . .
p = &x;
. . .
p = &y;
. . .
p = &c;
. . .

Fol osi ndu- ne de cuvant ul chei e voi d, l ui p i s- au put ut at r i bui adr ese de zone
de memor i e car e cont i n dat e de t i pur i di f er i t e.

Cand se f ol osesc poi nt er i de t i p voi d, est e necesar sa se f aca conver si i
expl i ci t e pr i n expr esi i de t i p cast ( val oar ea unui oper and se conver t est e cat r e
t i pul t i p f ol osi nd oper at or ul unar ( t i p) ) ,
pent r u a pr eci za t i pul dat ei spr e car e poi nt eaza un ast f el de poi nt er :

( t i p) oper and

Ast f el , daca se ut i l i zeaza p decl ar at ca i n exempl ul de mai sus, at unci o
at r i bui r e de f or ma:

*p = 100;

nu est e cor ect a, f i i ndca nu est e def i ni t t i pul dat ei spr e car e poi nt eaza p.
I n cazul de f at a, val oar ea l ui p t r ebui e conver t i t a spr e t i pul i nt * f ol osi nd
expr esi a cast :

( i nt *) p

I n f el ul acest a at r i bui r ea de mai sus devi ne:

*( i nt *) p = 100;


2. Funct i i necesar e i n pr ogr ame ce oper eaza cu poi nt er i

2. 1. Funct i a " mal l oc"

Est e decl ar at a i n f i si er ul header al l oc. h .
Funct i a:

mal l oc( val )

" aduna" val oct et i consecut i vi di n memor i a di sponi bi l a, r et ur nand adr esa l or de
i nceput .

2. 2. Expr esi a " si zeof "

si zeof ( t i p)

r et uneaza numar ul de oct et i necesar i unei var i abi l e de t i pul t i p.
De exempl u si zeof ( i nt ) r et ur neaza val oar ea 2.

2. 3. Funct i a " cal l oc"

Est e decl ar at a i n f i si er ul header al l oc. h .

Funct i a ar e doi par amet r i :

cal l oc( nr , di mens)

Pr i mul par amet r u i ndi ca pent r u cat e obi ect e se va al oca spat i u, i ar al doi l ea
di mensi unea f i ecar ui obi ect i n oct et i .

Ex. :
i nt *si r ;
. . .
si r = ( i nt *) cal l oc( 5, si zeof ( i nt ) ) ;


" si r " poi nt eaza l a o zona de memor i e suf i ci ent a pent r u a cont i ne 5 i nt r egi ( 5 x
2 = 10 oct et i ) .

Expr esi a ( i nt *) i ndi ca f apt ul ca adr esa va f i un poi nt er de t i pul i nt ,
r epr ezent and o conver si e de t i p ( cast ) .
Expr esi a nu e necesar a i n Tur bo C, ea f i i nd scr i sa pent r u por t abi l i t at ea
pr ogr amul ui .





I I . DESFASURAREA LUCRARI I


1. Scr i et i un pr ogr amcar e ut i l i zeaza doua var i abi l e i nt r egi v si p, di nt r e car e
ul t i ma est e de t i pul poi nt er .
Lui v i se at r i bui e val oar ea 200, i ar l ui p adr esa var i abi l ei v. Sa se af i seze
val or i l e, l ocat i a de memor i e si val oar ea poi nt at a de cel e doua var i abi l e.

2. Sa se scr i e un pr ogr amcar e ut i l i zeaza o si ngur a var i abi l a de t i p poi nt er
i nt r eg p pent r u car e est e al ocat a o zona de memor i e cu f unct i a mal l oc.
Pent r u o anumi t a mar i me al easa af i sat i val oar ea l ui p si val oar ea poi nt at a de p.

3. Fi e doua var i abi l e i nt r egi a si b i ni t i al i zat e cu doua val or i ar bi t r ar al ese.
Pr i n i nt er medi ul al t or var i abi l e de t i p poi nt er r eal i zat i un pr ogr amcar e sa
i nver seze val or i l e cel or doua var i abi l e.

4. Conf or mpr i nci pi i l or pr ogr amar i i pr ocedur al e ext r aget i f unct i a:

voi d i nver s( i nt *x, i nt *y)

di n cor pul f unct i ei mai n def i ni t a l a punct ul ant er i or .

5. Real i zat i un pr ogr amcar e cu aj ut or ul f unct i ei cal l oc al oca spat i u pent r u o
var i abi l a poi nt er de di mensi unea a 3 var i abi l e de t i p i nt .
I ni t i al i zat i , apoi af i sat i at at adr esel e cat si cont i nut ul l ocat i i l or de
memor i e.

6. Scr i et i un pr ogr ami n car e f unct i a mai n apel eaza o f unct i e de ci t i r e

voi d ci t i r e( f l oat *p)

a unei val or i r eal e de l a t ast at ur a, car e apoi va f i si af i sat a.

S-ar putea să vă placă și