Skillnaden mellan C ++ Referens vs Pointer

Även om C ++ -referensen till pekaren verkar vara likadant, finns det en betydande skillnad mellan både C ++ -referensen och pointeren. En referensvariabel kan sägas som ett annat namn på en befintlig variabel. När denna variabel har initialiserats kan variabelns namn användas för att hänvisa till en annan variabel. Pekare är å andra sidan variabler som lagrar adressen till en variabel. Liksom vilken variabel som helst, deklareras dessa först och sedan kan alla variabla adress lagras i dem. Låt oss titta på skillnaderna mellan C ++ Reference vs Pointer i detalj som nedan.

Head to Head-jämförelse mellan C ++ Referens vs Pointer (Infographics)

Nedan visas topp 7-skillnaden mellan C ++ Reference vs Pointer

Viktiga skillnader mellan C ++ Referens vs Pointer

Både C ++ Reference vs Pointer är populära val på marknaden; låt oss diskutera några av de största skillnaderna mellan C ++ Referens vs Pointer:

Huvudskillnaden mellan C ++ Reference vs Pointer är att man hänvisar till en annan variabel medan den senare lagrar adressen till en variabel. Hänvisningar gör ingen ändring i en originalvariabel medan om pekaren ändras påverkar den originalvariabeln. En referens måste initialiseras vid deklarationen medan det inte är nödvändigt att initiera en pekare när den har deklarerats. En rad pekare kan skapas medan en rad referenser inte kan skapas. Ett nollvärde kan inte tilldelas en referens men det kan tilldelas en pekare.

C ++ Referens jämfört med pointerjämförelsetabell

Den primära jämförelsen mellan C ++ Reference vs Pointer diskuteras nedan:

Basen för jämförelse mellan C ++ Referens vs PointerC ++ ReferensPekare
variablerEn referens kan sägas vara ett alias till en befintlig variabel. Den huvudsakliga användningen av denna variabel fungerar som en parameter som fungerar som en pass-by-referens. Detta överförs till en funktion. Den funktion som detta skickas till fungerar på den ursprungliga variabeln i stället för kopian i ett pass by-värde. Ändringarna i funktionen kommer också att återspeglas utanför.Pekarvariabler är variabler som lagrar adress. Till skillnad från vanliga variabler som vi har som int, double och char lagrar det minnesadresser. För att underlätta programmeringen uppstår behovet av denna variabel. Det är en variabel som kan lagra ett värde av en viss typ.
DeklarationDeklaration av en C ++ referensvariabel görs genom att lägga till en '&' symbol före en variabel. När det används med ett uttryck betyder det att det fungerar som operatörens adress. Det används för att tillhandahålla ett annat namn till en befintlig variabel.
Syntax:
typ & newName = existensnamn ;
// eller
typ & newName = existensnamn ;
// eller
typ & newName = existensnamn ;
För t.ex.
/ * Testreferensdeklaration och initialisering * /
#inkludera
med namnutrymme std;
int main () (
strängnamn = “Priya”; // Förklara en strängvariabel som heter namn
sträng & refName = namn; // Förklara en referens (alias) till variabelns namn
// Både refName och namn hänvisar till samma värde som “Priya”
cout << namn << endl; // Den skriver ut värdet på variabeln "Priya"
cout << refName << endl; // Den skriver ut referensvärdet “Priya”
Ändra nu värdet på Namn
refName = “Karishma”; // Tilldela ett nytt värde till refName
cout << refName << endl;
cout << namn << endl; // Värdet på antalet ändras också "Karishma"
namn = “Snehal”; // Tilldela ett nytt värde till namnet
cout << namer << endl;
cout << refName << endl; // Value of refName ändrar också “Snehal”
)
Detta betyder att en referensvariabelns värden kan ändras i variabelns original och kopia.
Innan du använder en pekare någonstans i programmet ska den förklaras i förväg. För att deklarera en pekare och låta systemet veta att det är en pekare förinställs en variabel av en '*'. En pekare åtföljs av datatyp som kan vara en int eller en dubbel, etc.
Syntax:
typ * pntr ; // Förklara en pekvariabel som heter pntr som en pekare av typen
// eller
typ * pntr ;
// eller
typ * pntr ;
För t.ex.
int * newPtr; // Förklara en pekvariabel som heter newPtr som pekar på en int (en int-pekare)
Den här pekaren håller adressen. Den adressen har ett int-värde.
dubbel * newdPtr; // Förklara en dubbelpekare
* Indikerar att en pekare förklaras och inte fungerar som operatör.
omplaceringEn referensvariabel kan inte tilldelas om.
Exempel:
int x = 5;
int y = 6;
int & r = x;
En pekare kan tilldelas om och den här egenskapen är praktiskt när en utvecklare implementerar datastrukturer som länkade listor, träd etc.
Exempel:
int x = 5;
int y = 6;
int * p;
p = & x;
p = & y;
MinnesadressEn referensvariabel delar samma adress som den ursprungliga variabeln. Dessa referenser kan vidarebefordras till olika funktioner, det kan lagras i olika klasser, etc. En referens pekar aldrig på en ny variabel förrän den gamla raderas eller går utanför räckvidden.En pekare har sin egen minnesadress och lagrar den på stacken. En pekare är en oberoende variabel och kan ha nya värden tilldelade sig själv.
NullvärdeEn referens kan inte tilldelas ett nollvärde.En pekare kan ha ett nullvärde direkt tilldelat.
ArgumentEn referensvariabel kan refereras till bypass med värde. Här skickas argument efter värden till funktionerna. En klon skapas och skickas till funktionen med den. Ändringar av kopian har ingen effekt på den ursprungliga variabeln.När vi vill ändra originalkopian kan det göras genom att lämna en pekare till objektet till funktionen. Detta kallas pass by reference.
När du ska använda denReferenser får indirekt åtkomst till en variabel. Tänk på följande exempel:
enum dag
(
Söndag måndag, …
);
Om vi ​​definierar en variabel
dag x;
Och vi vill överbelasta en operatör till uttalandet så kan vi skriva som nedan:
dag & operatör ++ (dag & d)
(
d = (dag) (d + 1);
återvända d;
)
Kort sagt kan detta användas i funktionsparametrar och referenstyper.
Att använda pekare är utan någon fördeklaration.
dag * operatör ++ (dag * d);
Detta kan användas för att implementera datastrukturer och pekare aritmetiska operationer.

Slutsats - C ++ Referens vs Pointer

C ++ Reference vs Pointer är svåra att arbeta med men de förbättrar programmets effektivitet till stor del. De båda C ++ Reference vs Pointer har sina egna användningsområden och tjänar sina egna syften. Du kan använda pekare när du vill implementera datastrukturer och algoritmer medan referenser när du vill använda funktioner och parametrar med returtyper.

Rekommenderad artikel

Detta har varit en guide till de bästa skillnaderna mellan C ++ Reference vs Pointer. Här diskuterar vi också C ++ Reference vs Pointer nyckelskillnader med infografik och jämförelsetabell. Du kan också titta på följande artiklar för att lära dig mer -

  1. Skillnader mellan Python och C ++
  2. C vs C ++ Prestanda - Bästa skillnader
  3. MongoDB vs Cassandra
  4. Mobx vs Redux
  5. C ++ Vector vs Array: Top Differences
  6. MongoDB vs DynamoDB: Funktioner
  7. MongoDB vs SQL: Vilka är funktionerna
  8. C vs C #: funktioner

Kategori: