QReferate - referate pentru educatia ta.
Cercetarile noastre - sursa ta de inspiratie! Te ajutam gratuit, documente cu imagini si grafice. Fiecare document sau comentariu il poti downloada rapid si il poti folosi pentru temele tale de acasa.



AdministratieAlimentatieArta culturaAsistenta socialaAstronomie
BiologieChimieComunicareConstructiiCosmetica
DesenDiverseDreptEconomieEngleza
FilozofieFizicaFrancezaGeografieGermana
InformaticaIstorieLatinaManagementMarketing
MatematicaMecanicaMedicinaPedagogiePsihologie
RomanaStiinte politiceTransporturiTurism
Esti aici: Qreferat » Documente informatica

Pointeri



Necesitatea utilizarii pointerilor va apare cu mai multa claritate in sectiunea dedicata sirurilor de caractere si functiilor.
Exemplul 1. Fie programul urmator:
#include
void main()
{
int x,y;
int *px;
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
px=&x;
cout<<"x are valoarea "<<*px;
*px=y;
cout<<" nx a devenit "< }
In programul de mai sus am introdus valorile variabilelor intregi x si y, am definit un pointer la variabila x si am atribuit acestuia adresa de memorie alocat variabilei x. Sa analizam atent linia:
cout<<"x are valoarea "<<*px;
Prin *px se intelege valoarea aflata in zona de memorie a carei adresa este memorata in pointerul px. Valoarea afisata va fi chiar valoarea introdusa pentru x deoarece, inainte de afisare, pointerul px a primit ca valoare adresa variabilei x, adresa la care se afla valoarea acesteia (valoare dobandita prin utilizarea functiei cin).
Atribuirea *px=y; va modifica valolarea care se afla la adresa memorata de px, valoare care va fi valoarea introdusa de utilizator pentru variabila y. Astfel va fi modificata chiar valoarea pe care o are variabila x.
Fireste ca era mai simplu sa folosim atribuirea x=y; care are acelasi efect si ne scuteste de de-a mai folosi pointeri, insa exemplul este pur didactic.
Operatorul unar * este folosit sub forma *variabila_pointer, valoarea acestei expresii fiind valoarea care se gaseste in memorie la adresa memorata de pointerul ce apare ca operand. In concluzie, prin px avem acces la adresa variabilei x, iar prin *px la valoarea variabilei x.
Vom spune ca un pointer "refera" indirect un obiect sau ca "pointeaza"(arata) la obiectul respectiv. Variabilele pointer pot fi incadrate ca fiind de tip referinta.
Exemplul 2. Sa se calculeze suma a doua numere reale folosind pointeri.
#include
void main()
{
double x,y,z;
double *px, *py, *pz;


cin>>x;
cin>>y;
px=&x;
py=&y;
pz=&z;
*pz=*px+*py;
cout<<"Suma este: "<<*pz;
}


2. Pointeri si tablouri
In limbajul C, exista o foarte stransa legatura intre pointeri si tablouri, astfel ca pointerii si tablourile sunt tratate la fel. Orice program in care apar tablouri poate fi modificat astfel incat sa foloseasca poiteri in locul tablourilor. In aceasta sectiune vom discuta despre legatura dintre pointeri si vectori (tablouri unidimensionale).
Fie urmatoarele declaratii:
int a[20];
int *pa;
Am declarat o variabila a , care este un vector cu maxim 20 elemente intregi si un pointer la o variabila de tip intreg. Dupa cum se stie, o valoare int are nevoie de 16 biti pentru a fi memorata, adica 2 bytes ( o variabila int poate retine numere intregi intre -32768 si 32767, vezi curs Bazele Informaticii). Pentru tabloul a vor fi alocati 2·ð 20=40 bytes consecutivi in memorie adica, pentru primul element a[0] sunt alocati primii 2 bytes, pentru a[1] urmatorii 2 bytes, . , pentru a[19] ultimii 2 bytes din cei 40 alocati.
Fie atribuirea:
pa=&a[0];
Dupa aceasta atribuire, pointerul pa contine adresa primului element al vectorului, adica pa pointeaza la inceputul vectorului a.
Daca scriem pa=&a[3]; atunci pa va referi elementul al 4-lea din vectorul a, iar *pa va contine valoarea sa.
Operatiile care se pot realiza cu pointeri sunt:
comparatia
adunarea unui pointer cu un intreg
scaderea unui intreg dintr-un pointer
Doi pointeri pot fi comparati folosind operatori relationali. In comparatia:
if(p1==p2) cout<<"Adrese identice";
else cout<<"Adrese diferite";
se verifica daca adresa memorata de p1 este aceeasi cu adresa retinuta de p2, unde p1 si p2 sunt pointeri de acelasi tip.

Descarca referat

E posibil sa te intereseze alte documente despre:


Copyright © 2024 - Toate drepturile rezervate QReferat.com Folositi documentele afisate ca sursa de inspiratie. Va recomandam sa nu copiati textul, ci sa compuneti propriul document pe baza informatiilor de pe site.
{ Home } { Contact } { Termeni si conditii }