Forskjellen mellom C ++ Reference vs Pointer

Selv om C ++ referanse til pekeren ser ut til å være lik, er det en betydelig forskjell mellom begge C ++ Reference vs Pointer. En referansevariabel kan sies som et annet navn på en eksisterende variabel. Når denne variabelen er initialisert, kan variabelnavnet brukes til å referere til en annen variabel. Pekere er derimot variabler som lagrer adressen til en variabel. Som en hvilken som helst variabel deklareres disse først, og deretter kan en hvilken som helst variabel adresse lagres i dem. La oss se på forskjellene mellom C ++ Reference vs Pointer i detalj som nedenfor.

Sammenligning fra topp mot hode mellom C ++ Referanse vs Pointer (Infographics)

Nedenfor er topp 7-forskjellen mellom C ++ Reference vs Pointer

Viktige forskjeller mellom C ++ Reference vs Pointer

Både C ++ Reference vs Pointer er populære valg i markedet; la oss diskutere noen av de viktigste forskjellen mellom C ++ Reference vs Pointer:

Hovedforskjellen mellom C ++ Reference vs Pointer er at man refererer til en annen variabel mens sistnevnte lagrer adressen til en variabel. Henvisninger gjør ingen endringer i en originalvariabel, mens hvis pekeren endres, påvirker den originale variabelen. En referanse må initialiseres ved erklæring, mens det ikke er nødvendig å initialisere en peker når den er erklært. En rekke pekere kan opprettes mens en rekke referanser ikke kan opprettes. En nullverdi kan ikke tilordnes til en referanse, men den kan tilordnes en peker.

C ++ Reference vs Pointer Comparison Table

Den primære sammenligningen mellom C ++ Reference vs Pointer er diskutert nedenfor:

Sammenligningsgrunnlaget mellom C ++ Reference vs PointerC ++ ReferansePointer
variablerEn referanse kan sies som et alias til en eksisterende variabel. Hovedbruken av denne variabelen fungerer som en parameter som fungerer som en forbipåvisning. Dette sendes til en funksjon. Funksjonen som denne sendes til, fungerer på den opprinnelige variabelen i stedet for kopien i en pass-by-verdi. Endringene gjort i funksjonen vil også gjenspeiles utenfor.Pekervariabler er variabler som lagrer adresse. I motsetning til vanlige variabler som vi har som int, double og char, lagrer den minneadresser. For å gjøre programmeringen enklere oppstår behovet for denne variabelen. Det er en variabel som kan lagre en verdi av en bestemt type.
ErklæringDeklarasjon av en C ++ referansevariabel gjøres ved å legge til et '&' symbol før en variabel. Når det brukes med et uttrykk, betegner det at det fungerer som en adresse til operatøren. Det brukes til å gi et annet navn til en eksisterende variabel.
syntaks:
type & newName = eksisterende navn ;
// eller
type & newName = eksisterende navn ;
// eller
type & newName = eksisterende navn ;
For f.eks:
/ * Testhenvisning og initialisering * /
#inkludere
bruker navneområde std;
int main () (
strengnavn = “Priya”; // Forklar en strengvariabel som heter navn
streng & refName = navn; // Forklar en henvisning (alias) til variabelnavnet
// Både refName og navn refererer til den samme verdien av “Priya”
cout << navn << endl; // Den skriver ut verdien til variabelen “Priya”
cout << refName << endl; // Den skriver ut referanseverdien “Priya”
Nå endrer du verdien på Navn
refName = “Karishma”; // Tilordne en ny verdi til refName på nytt
cout << refName << endl;
cout << navn << endl; // Verdien av tallet endrer også “Karishma”
navn = “Snehal”; // Tilordne en ny verdi på nytt
cout << namer << endl;
cout << refName << endl; // Verdien av refName endrer også “Snehal”
)
Dette betyr at verdiene til en referansevariabel kan endres i originalen og kopien av variabelen.
Før du bruker en peker hvor som helst i programmet, bør den deklareres på forhånd. For å erklære en peker og gi systemet beskjed om at det er en peker, er en variabel forhåndsinnstilt av en '*'. En peker er ledsaget av datatype som kan være en int eller en dobbel, etc.
syntaks:
type * pntr ; // Forklar en pekervariabel kalt pntr som en peker av typen
// eller
type * pntr ;
// eller
type * pntr ;
For f.eks:
int * newPtr; // Forklar en pekervariabel kalt newPtr som peker til en int (en int-peker)
Denne pekeren vil inneholde adressen. Den adressen har en int-verdi.
dobbelt * newdPtr; // Forklar en dobbeltpeker
* Indikerer at en peker blir erklært og ikke fungerer som en operatør.
OverføringEn referansevariabel kan ikke tilordnes på nytt.
Eksempel:
int x = 5;
int y = 6;
int & r = x;
En peker kan tilordnes på nytt, og denne egenskapen er nyttig når en utvikler implementerer datastrukturer som koblede lister, trær osv.
Eksempel:
int x = 5;
int y = 6;
int * p;
p = & x;
p = & y;
MinneadresseEn referansevariabel deler samme adresse som den opprinnelige variabelen. Disse referansene kan sendes til forskjellige funksjoner, de kan lagres i forskjellige klasser, etc. En referanse peker aldri på en ny variabel før den gamle er slettet eller går utenfor omfanget.En peker har sin egen minneadresse og lagrer den på bunken. En peker er en uavhengig variabel og kan tilordne seg nye verdier.
Null verdiEn referanse kan ikke tilordne en nullverdi.En peker kan tildeles en nullverdi direkte.
argumenterEn referansevariabel kan refereres til bypass med verdi. Her føres argumenter av verdi til funksjonene. En klon lages og sendes til funksjonen ved å bruke den. Endringer gjort på kopien har ingen innvirkning på den opprinnelige variabelen.Når vi ønsker å endre originalkopien, kan det gjøres ved å føre en peker til objektet inn i funksjonen. Dette er kjent som pass ved referanse.
Når du skal bruke denReferanser får indirekte tilgang til en variabel. Tenk på følgende eksempel:
enum dag
(
Søndag Mandag, …
);
Hvis vi definerer en variabel
dag x;
Og vi vil overbelaste en operatør til uttalelsen, så kan vi skrive som nedenfor:
dag & operatør ++ (dag og d)
(
d = (dag) (d + 1);
retur d;
)
Kort sagt kan dette brukes i funksjonsparametere og referansetyper.
Å bruke pekere er uten forhåndserklæring.
dag * operatør ++ (dag * d);
Dette kan brukes til å implementere datastrukturer og peker aritmetiske operasjoner.

Konklusjon - C ++ Reference vs Pointer

C ++ Reference vs Pointer er vanskelig å jobbe med, men de forbedrer effektiviteten til programmet i stor grad. De begge C ++ Reference vs Pointer har sin egen bruk og tjener sine egne formål. Du kan bruke pekere når du ønsker å implementere datastrukturer og algoritmer, mens referanser når du ønsker å bruke funksjoner og parametere med returtyper.

Anbefalt artikkel

Dette har vært en guide til toppforskjellene mellom C ++ Reference vs Pointer. Her diskuterer vi også C ++ Reference vs Pointer viktige forskjeller med infografikk, og sammenligningstabell. Du kan også se på følgende artikler for å lære mer -

  1. Python vs C ++ forskjeller
  2. C vs C ++ Ytelse - Beste forskjeller
  3. MongoDB vs Cassandra
  4. Mobx vs Redux
  5. C ++ Vector vs Array: Top Differences
  6. MongoDB vs DynamoDB: Funksjoner
  7. MongoDB vs SQL: Hva er funksjonene
  8. C vs C #: Funksjoner