Forskellen mellem C ++ Reference vs Pointer

Selvom C ++ henvisning til markøren ser ud til at være den samme, er der en signifikant forskel mellem begge C ++ Reference vs Pointer. En referencevariabel kan siges som et andet navn på en eksisterende variabel. Når denne variabel er initialiseret, kan variabelnavnet bruges til at henvise til en anden variabel. Pegere på den anden side er variabler, der gemmer adressen på en variabel. Som enhver variabel deklareres disse først, og derefter kan enhver variables adresse gemmes i dem. Lad os se på forskellene mellem C ++ Reference vs Pointer i detaljer som nedenfor.

Sammenligning mellem hoved og hoved mellem C ++ Reference vs Pointer (Infographics)

Nedenfor er top 7-forskellen mellem C ++ Reference vs Pointer

Vigtige forskelle mellem C ++ Reference vs Pointer

Både C ++ Reference vs Pointer er populære valg på markedet; lad os diskutere nogle af de største forskelle mellem C ++ Reference vs Pointer:

Den største forskel mellem C ++ Reference vs Pointer er, at man refererer til en anden variabel, mens sidstnævnte lagrer adressen på en variabel. Referencer foretager ikke en ændring i en original variabel, mens hvis markøren ændres, påvirker den den originale variabel. En henvisning skal initialiseres ved erklæring, mens det ikke er nødvendigt at initialisere en markør, når den først er deklareret. En række markører kan oprettes, mens en række referencer ikke kan oprettes. En nullværdi kan ikke tildeles en reference, men den kan tildeles en markør.

C ++ Reference vs Pointer Sammenligningstabel

Den primære sammenligning mellem C ++ Reference vs Pointer diskuteres nedenfor:

Sammenligningsgrundlaget mellem C ++ Reference vs PointerC ++ ReferencePointer
VariableEn henvisning kan siges som et alias til en eksisterende variabel. Den vigtigste anvendelse af denne variabel fungerer som en parameter, der fungerer som en forbi-reference. Dette overføres til en funktion. Den funktion, som dette overføres, fungerer på den originale variabel i stedet for kopien i en pass-by-værdi. Ændringerne, der er foretaget inden for funktionen, afspejles også udenfor.Markørvariabler er variabler, der gemmer adresse. I modsætning til sædvanlige variabler, som vi har som int, double og char, gemmer det hukommelsesadresser. For at gøre programmeringen lettere opstår behovet for denne variabel. Det er en variabel, der kan gemme en værdi af en bestemt type.
ErklæringDeklaration af en C ++ -referencevariabel udføres ved at tilføje et '&' -symbol før en variabel. Når det bruges med et udtryk, betegner det, at det fungerer som en operatørs adresse. Det bruges til at give et andet navn til en eksisterende variabel.
Syntaks:
type & newName = eksisterende navn ;
// eller
type & newName = eksisterende navn ;
// eller
type & newName = eksisterende navn ;
For f.eks:
/ * Testreferenceerklæring og initialisering * /
#omfatte
ved hjælp af navneområde std;
int main () (
strengnavn = “Priya”; // Angiv en strengvariabel kaldet navn
streng & refName = navn; // Angiv en henvisning (alias) til variabelnavnet
// Både refName og navn henviser til den samme værdi af “Priya”
cout << navn << endl; // Det udskriver værdien af ​​variablen “Priya”
cout << refName << endl; // Det udskriver værdien af ​​referencen “Priya”
Skift nu værdien på Navn
refName = “Karishma”; // Tildel en ny værdi til refName igen
cout << refName << endl;
cout << navn << endl; // Værdien af ​​antallet ændrer også “Karishma”
navn = “Snehal”; // Tildel en ny værdi til navnet igen
cout << namer << endl;
cout << refName << endl; // Værdien af ​​refName ændrer også “Snehal”
)
Dette betyder, at en referencevariabeles værdier kan ændres i originalen og kopien af ​​variablen.
Før du bruger en markør overalt i programmet, skal den erklæres på forhånd. For at erklære en markør og lade systemet vide, at det er en markør, er en variabel præfixeret af en '*'. En markør ledsages af datatype, der kan være en int eller en dobbelt osv.
Syntaks:
type * pntr ; // Angiv en markørvariabel kaldet pntr som en pointer af typen
// eller
type * pntr ;
// eller
type * pntr ;
For f.eks:
int * newPtr; // Erklær en markørvariabel kaldet newPtr peger på en int (en int pointer)
Denne markør holder adressen. Denne adresse har en int-værdi.
dobbelt * newdPtr; // Angiv en dobbeltviser
* Angiver, at en markør erklæres og ikke fungerer som operatør.
OverflytningEn referencevariabel kan ikke tildeles igen.
Eksempel:
int x = 5;
int y = 6;
int & r = x;
En markør kan tildeles igen, og denne egenskab kommer godt med, når en udvikler implementerer datastrukturer som linkede lister, træer osv.
Eksempel:
int x = 5;
int y = 6;
int * p;
p = & x;
p = & y;
HukommelsesadresseEn referencevariabel deler den samme adresse som den originale variabel. Disse referencer kan videresendes til forskellige funktioner, det kan gemmes i forskellige klasser osv. En reference peger aldrig på en ny variabel, før den gamle er slettet eller går uden for rækkevidde.En markør har sin egen hukommelsesadresse og gemmer den på stakken. En markør er en uafhængig variabel og kan få nye værdier tildelt til sig selv.
Nul værdiEn reference kan ikke tildele en nulværdi.En markør kan tildele en nullværdi direkte.
argumenterEn referencevariabel kan refereres til bypass med værdi. Her overføres argumenter af værdi til funktionerne. En klon oprettes og sendes til funktionen ved hjælp af den. Ændringer foretaget på kopien har ingen indflydelse på den oprindelige variabel.Når vi ønsker at ændre den originale kopi, kan det gøres ved at sende en markør af objektet til funktionen. Dette kaldes pass by reference.
Hvornår skal brugesReferencer får indirekte adgang til en variabel. Overvej følgende eksempel:
enum dag
(
Søndag Mandag, …
);
Hvis vi definerer en variabel
dag x;
Og vi vil overbelaste en operatør til erklæringen, så kan vi skrive som nedenfor:
dag & operatør ++ (dag & d)
(
d = (dag) (d + 1);
retur d;
)
Kort sagt kan dette bruges i funktionsparametre og referencetyper.
Brug af pegere er uden nogen foruddeklaration.
dag * operatør ++ (dag * d);
Dette kan bruges til at implementere datastrukturer og pointer aritmetiske operationer.

Konklusion - C ++ Reference vs Pointer

C ++ Reference vs Pointer er vanskelige at arbejde på, men de forbedrer programmets effektivitet i vid udstrækning. De begge C ++ Reference vs Pointer har deres egne anvendelser og tjener deres egne formål. Du kan bruge pegepunkter, når du ønsker at implementere datastrukturer og algoritmer, mens referencer, når du ønsker at bruge funktioner og parametre med returtyper.

Anbefalet artikel

Dette har været en guide til de største forskelle mellem C ++ Reference vs Pointer. Her diskuterer vi også C ++ Reference vs Pointer nøgleforskelle med infografik og sammenligningstabel. Du kan også se på de følgende artikler for at lære mere -

  1. Forskelle mellem Python og C ++
  2. C vs C ++ Performance - Bedste forskelle
  3. MongoDB vs Cassandra
  4. Mobx vs Redux
  5. C ++ Vector vs Array: Topforskelle
  6. MongoDB vs DynamoDB: Funktioner
  7. MongoDB vs SQL: Hvad er funktionerne
  8. C vs C #: Funktioner

Kategori: