Diferența dintre indicatorul și referința | Pointer vs Referință

Anonim

Diferența cheie - Pointer vs Referință

Înainte de a discuta diferența dintre indicatorul și referința, să analizăm mai întâi semnificația acestor două termeni pe scurt. Într-un program, datele ocupă memorie. Locația exactă a memoriei în care s-au plasat datele într-un timp de execuție trebuie să fie cunoscută pentru a le accesa.

variabilele de referință și variabilele de referință sunt utilizate pentru a accesa aceste date și pentru a manipula adresele de memorie în care se află. Adică, atât indicatorii, cât și referințele pot fi folosite pentru a se referi indirect la obiecte. Ele dețin, în esență, adrese de memorie ca valori. Diferența cheie între un indicator și o referință este că un pointer este o variabilă care stochează adresa locației de memorie a altei variabile în timp ce o referință este o variabilă care se referă la o altă variabilă. Cele două mecanisme, indicatorul și referința, au sintaxă diferită și utilizarea .

Ce este un Pointer?

Un pointer este

un obiect de limbaj de programare care stochează adresa de memorie a unei valori în memoria de calcul. În sintaxa C ++;

int i = 5;

int * ptr = & i;

Prima linie defineste o variabila initializata cu o valoare 5. A doua linie defineste un pointer la adresa de memorie a variabilei. Aici, 'ptr' este declarat ca un obiect de tip 'pointer to int' a cărui valoare inițială este adresa obiectului i. În esență, ptr variază punctele la i prin stocarea adresei sale de memorie.

Obținerea valorii stocate într-o locație de memorie se numește

dereferencing . Operatorul * este folosit pentru a dereferența indicatorul. După încheierea declarațiilor, expresia indirectă * ptr dereferences ptr se referă la i. Pentru a modifica valoarea lui i, se poate folosi următorul asignare;

* ptr = 20;

Pointerii pot fi reassigned pentru a face referire la diferite obiecte, de asemenea.

A indicatorul nul este un tip special de pointer. Un pointer nul este adesea marcat cu 0 sau nul și nu indică nimic. Este o practică bună să utilizați un pointer nul în cazul în care nu aveți o adresă exactă care să fie atribuită pointerului. Această atribuire poate fi utilizată în operații și condiții logice. Pointerii pot fi

utilizați pentru a stoca și administra adresa de memorie alocată dinamic . Implementarea și controlul structurilor de date cum ar fi stivele, cozile și listele pot fi eficiente prin utilizarea indicatoarelor. De exemplu, o coadă poate avea două indicii; cap pointer și pointer coada.Pointerii pot fi, de asemenea, utilizați pentru a trece variabilele prin adresa lor, ceea ce ar permite schimbarea valorii. Manipularea directă a dispozitivelor cu memorie sau memorie cu memorie poate fi efectuată și prin utilizarea indicatorilor. Indicatorii permit atât accesul protejat cât și cel neprotejat la memoria adresată. Prin urmare, trebuie luate măsuri de precauție necesare pentru a verifica dacă conținutul unui indicator este valabil. În caz contrar, dereferentarea unui indicator cu o adresă de memorie invalidă ar putea provoca caderea programului.

Pointerii sunt susținute în limbi precum C, C ++, Pascal și multe limbi de asamblare.

Pointer

a indicând adresa de memorie asociată cu variabila b. Ce este o referință?

O referință este pur și simplu un identificator alternativ

pentru o valoare stocată în memorie . Acesta permite unui program să acceseze indirect un anumit date. În sintaxa C ++;

int i = 5;

int & ref =

i; Prima linie definește o variabilă inițializată cu o valoare de 5. A doua linie declară "ref" ca un obiect de tip "referință la int" care se referă la i. O referință este diferită de datele în sine, dat fiind faptul că o referință este implementată ca adresa fizică a datei particulare care este stocată în memorie.

Odată definită, o referință nu poate fi realocată o nouă valoare. O referință se referă întotdeauna la obiectul cu care este inițializată. În următoarea atribuire, ref încă se referă la i, dar valoarea este acum 20.

ref = 20;

În conformitate cu exemplul de mai sus, referințele de dereferențiere nu necesită niciun operator.

Referințele pot fi folosite atunci când o variabilă se referă întotdeauna la un obiect. Acest lucru se datorează faptului că, spre deosebire de pointeri, referințele nu pot fi nulă și trebuie să fie întotdeauna atribuite la inițializare. Deoarece referințele trebuie să se refere întotdeauna la un obiect, făcând o astfel de variabilă o referință, asigurând funcționarea eficientă și corectă a programului. Având în vedere că nu există referințe nula, validitatea unei variabile de referință nu trebuie testată.

Variabilele de referință pot fi

folosite pentru a transmite eficient datele mari ca argumente procedurilor . Referințele sunt, de asemenea, utilizate pentru partajarea de date mari între diferitele zone de cod, deoarece fiecare cod păstrează o referință la date. Limbi de programare, cum ar fi C ++, Java, Python, Perl, PHP, Ruby, etc.

Care este diferența dintre Pointer și Referință?

Definiția indicatorului și a referinței

Pointer:

Un pointer este adresa de memorie a unui obiect stocat în memoria de calcul. Referință:

O referință este un identificator alternativ sau un pseudonim pentru un obiect. Caracteristicile indicatorului și al referinței

Declarație

Pointer:

Un pointer este declarat cu operatorul *. Referință:

O referință este declarată cu operatorul &. Dereferencing

Pointer:

O variabilă a pointerului cere ca operatorul * să fie dereferențiat. Referință:

O variabilă de referință nu cere ca niciun operator să nu fie dereferențiat. Inițializarea

Pointer:

Pointerii pot fi inițializați la null.Astfel de variabile sunt numite pointeri null. Referință:

Referințele nu pot fi inițializate la nul. Nu există nici o referință nulă. O referință trebuie să se refere mereu la un obiect. Reassignments

Pointer:

O variabilă pointer poate fi realocată pentru a se referi la diferite obiecte. Referință:

O variabilă de referință nu poate fi realocată. Se referă întotdeauna la obiectul cu care a fost inițializată. Utilizare

Pointer:

Variabilele pointerului ar trebui folosite atunci când nu există posibilitatea de a face referire la nimic sau când este necesar să se facă trimitere la diferite lucruri la momente diferite. Referință:

Variabilele de referință ar trebui folosite atunci când va exista întotdeauna un obiect la care se face referire și când nu este necesar să se utilizeze acea variabilă de referință pentru a se referi la altceva decât obiectul respectiv. Aplicație de utilizare

Pointer:

Variabilele pointer pot fi folosite pentru a implementa algoritmi și structuri de date. Referință:

Variabilele de referință pot fi utilizate în parametrii de funcții, iar tipurile de returnare definesc interfețe utile. Limbi utilizate:

Pointer:

Limbile de programare cum ar fi C, C ++, Pascal și multe limbi de asamblare susțin indicii. Referință:

Limbi de programare, cum ar fi referințele de suport C ++, Java, Python, Perl, PHP, Ruby etc. Image courtesy: "Pointers" de Acest fișier a fost realizat de către Utilizator: SvenTranslation. Propria munca. Această imagine vectorală a fost creată cu Inkscape. (CC BY-SA 3. 0) prin intermediul Commons -