Diferența dintre referința C ++ și indicatorul

Deși referința C ++ la pointer pare a fi similară, există o diferență semnificativă între C ++ Referință și Pointer. O variabilă de referință se poate spune ca un alt nume pentru o variabilă existentă. Odată inițializată această variabilă, numele variabilei poate fi utilizat pentru a face referire la o altă variabilă. În schimb, indicatorii sunt variabile care stochează adresa unei variabile. Ca orice variabilă, acestea sunt declarate mai întâi și apoi orice adresă a variabilei poate fi stocată în ele. Să aruncăm o privire la diferențele dintre C ++ Referință și Pointer în detaliu, mai jos.

Comparația dintre cap și față între referința C ++ și pointer (infografie)

Mai jos este cea mai mare diferență 7 între C ++ Referință și Pointer

Diferențe cheie între C ++ Referință și Pointer

Atât C ++ Referință, cât și Pointer sunt alegeri populare pe piață; hai să discutăm unele dintre diferențele majore dintre referința C ++ și indicatorul:

Principala diferență între C ++ Referință și Pointer este că una se referă la o altă variabilă, în timp ce aceasta din urmă stochează adresa unei variabile. Referințele nu fac o schimbare într-o variabilă originală, deși dacă indicatorul este schimbat, aceasta afectează variabila inițială. O referință trebuie să fie inițializată la declarație, în timp ce nu este necesar să se inițialeze un indicator după ce este declarată. Poate fi creat un tablou de indicatoare, în timp ce nu poate fi creat un tablou de referințe. O valoare nulă nu poate fi atribuită unei referințe, dar poate fi atribuită unui indicator.

Referință C ++ Tabel de comparație comparativ

Comparația principală între C ++ Referință și Pointer sunt discutate mai jos:

Baza de comparație între C ++ Referință și PointerReferință C ++ac indicator
variabileO referință se poate spune ca un alias la o variabilă existentă. Utilizarea principală a acestei variabile funcționează ca un parametru care funcționează ca referință trecătoare. Aceasta este transmisă unei funcții. Funcția la care aceasta este transmisă funcționează pe variabila inițială în loc de copiere într-o valoare de trecere. Modificările efectuate în interiorul funcției vor fi reflectate și în exterior.Variabilele pointer sunt variabile care stochează adresa. Spre deosebire de variabilele obișnuite pe care le avem ca int, double și char, stochează adrese de memorie. Pentru a facilita programarea apare nevoia acestei variabile. Este o variabilă care poate stoca o valoare de un anumit tip.
DeclaraţieDeclarația unei variabile de referință C ++ se face prin adăugarea unui simbol „&” înaintea unei variabile. Când este utilizat cu o expresie, denotă că funcționează ca adresă a operatorului. Este folosit pentru a furniza un alt nume unei variabile existente.
Sintaxă:
tip & newName = nume existent ;
// sau
tip & newName = nume existent ;
// sau
tip & newName = nume existent ;
De exemplu:
/ * Declarație de referință de testare și inițializare * /
#include
folosirea spațiului de nume std;
int main () (
string name = „Priya”; // Declarați o variabilă string numită nume
string & refName = nume; // Declarați o referință (alias) la numele variabilei
// Atât numele, cât și numele se referă la aceeași valoare a „Priya”
cout << nume << endl; // Tipărește valoarea variabilei „Priya”
cout << refName << endl; // Tipărește valoarea de referință „Priya”
Acum schimbați valoarea Nume
refName = „Karishma”; // Re-alocați o nouă valoare lui refName
cout << refName << endl;
cout << nume << endl; // Valoarea numărului modifică și „Karishma”
nume = „Snehal”; // Re-alocați o nouă valoare pentru nume
cout << namer << endl;
cout << refName << endl; // Valoarea renumerului se modifică și „Snehal”
)
Aceasta înseamnă că valorile unei variabile de referință pot fi modificate în original și în copia variabilei.
Înainte de a utiliza un indicator oriunde în program, ar trebui să fie declarat în avans. Pentru a declara un pointer și a anunța sistemul că este un pointer, o variabilă este prefixată de un '*'. Un pointer este însoțit de tipul de date care poate fi un int sau un dublu etc.
Sintaxă:
tip * pntr ; // Declarați o variabilă pointer numită pntr ca indicator de tip
// sau
tip * pntr ;
// sau
tip * pntr ;
De exemplu:
int * newPtr; // Declarați o variabilă pointer numită newPtr îndreptată către un int (un pointer int)
Acest indicator va păstra adresa. Această adresă deține o valoare int.
dublu * newdPtr; // Declarați un indicator dublu
* Indică faptul că un indicator este declarat și nu acționează ca operator.
RealocareaO variabilă de referință nu poate fi reasignată.
Exemplu:
int x = 5;
int y = 6;
int & r = x;
Un pointer poate fi reasignat și această proprietate vine la îndemână atunci când un dezvoltator implementează structuri de date precum liste legate, arbori etc.
Exemplu:
int x = 5;
int y = 6;
int * p;
p = & x;
p = & y;
Adresa de memorieO variabilă de referință are aceeași adresă cu variabila inițială. Aceste referințe pot fi transmise diferitelor funcții, pot fi stocate în clase diferite etc. O referință nu indică niciodată o nouă variabilă până când vechea este ștersă sau iese din sfera de aplicare.Un pointer are propria sa adresă de memorie și o stochează pe stivă. Un pointer este o variabilă independentă și poate avea noi valori alocate.
Valoare nulăO referință nu poate fi atribuită o valoare nulă.Un pointer poate avea o valoare nulă atribuită direct.
ArgumenteLa o variabilă de referință se poate face referire bypass după valoare. Aici argumentele sunt transmise prin valoare funcțiilor. O clonă este făcută și trimisă funcției folosind-o. Modificările aduse copiei nu au niciun efect asupra variabilei originale.Când dorim să schimbăm copia originală, atunci aceasta poate fi făcută trecând un indicator al obiectului în funcție. Acest lucru este cunoscut sub numele de referință.
Când să folosițiReferințele accesează indirect o variabilă. Luați în considerare următorul exemplu:
enum ziua
(
Duminică luni, …
);
Dacă definim o variabilă
ziua x;
Și vrem să supraîncărcăm un operator în declarație, atunci putem scrie ca mai jos:
zi & operator ++ (zi și zi)
(
d = (zi) (d + 1);
retur d;
)
Pe scurt, acest lucru poate fi utilizat în parametrii funcției și tipurile de referință.
Utilizarea indicatoarelor este fără nicio declarație prealabilă.
zi * operator ++ (zi * d);
Acest lucru poate fi utilizat pentru a implementa structuri de date și operații aritmetice pointer.

Concluzie - Referință C ++ vs Pointer

Referință C ++ vs Pointer sunt dificil de lucrat, dar îmbunătățesc într-o mare măsură eficiența programului. Amândoi C ++ Reference vs Pointer au propriile lor utilizări și își servesc propriile scopuri. Puteți utiliza indicatoarele când doriți să implementați structuri și algoritmi de date, în timp ce referințe atunci când doriți să utilizați funcții și parametri cu tipuri de retur.

Articol recomandat

Acesta a fost un ghid pentru diferențele de vârf între C ++ Referință și Pointer. Aici vom discuta, de asemenea, despre diferențele de referință C ++ vs Pointer cu infografie și tabelul de comparație. De asemenea, puteți arunca o privire la următoarele articole pentru a afla mai multe -

  1. Diferențe Python față de C ++
  2. Performanță C vs C ++ - cele mai bune diferențe
  3. MongoDB vs Cassandra
  4. Mobx vs Redux
  5. C ++ Vector vs Array: diferențe de top
  6. MongoDB vs DynamoDB: Funcții
  7. MongoDB vs SQL: Care sunt funcțiile
  8. C vs C #: Funcții