Verschil tussen C ++ Reference vs Pointer

Hoewel C ++ verwijzing naar pointer vergelijkbaar lijkt, is er een significant verschil tussen beide C ++ Reference versus Pointer. Een referentievariabele kan worden gezegd als een andere naam voor een bestaande variabele. Nadat deze variabele is geïnitialiseerd, kan de variabelenaam worden gebruikt om naar een andere variabele te verwijzen. Aanwijzers zijn daarentegen variabelen die het adres van een variabele opslaan. Zoals elke variabele, worden deze eerst gedeclareerd en vervolgens kan het adres van elke variabele worden opgeslagen. Laten we de verschillen tussen C ++ Reference versus Pointer in detail bekijken, zoals hieronder.

Head to Head-vergelijking tussen C ++ Reference versus Pointer (Infographics)

Hieronder staat het top 7 verschil tussen C ++ Reference versus Pointer

Belangrijkste verschillen tussen C ++ Reference versus Pointer

Beide C ++ Reference versus Pointer zijn populaire keuzes in de markt; laten we enkele van de belangrijkste verschillen tussen C ++ Reference versus Pointer bespreken:

Het belangrijkste verschil tussen C ++ Reference versus Pointer is dat men naar een andere variabele verwijst, terwijl deze het adres van een variabele opslaat. Referenties brengen geen verandering aan in een originele variabele, maar als de aanwijzer wordt gewijzigd, heeft dit wel invloed op de oorspronkelijke variabele. Een verwijzing moet bij de aangifte worden geïnitialiseerd, terwijl het niet nodig is om een ​​aanwijzer te initialiseren zodra deze is gedeclareerd. Een reeks verwijzingen kan worden gemaakt terwijl een reeks verwijzingen niet kan worden gemaakt. Een nulwaarde kan niet aan een referentie worden toegewezen, maar wel aan een aanwijzer.

C ++ Reference vs Pointer Comparison Table

De primaire vergelijking tussen C ++ Reference versus Pointer wordt hieronder besproken:

De basis van vergelijking tussen C ++ Reference vs PointerC ++ ReferentieWijzer
VariabelenEen verwijzing kan worden gezegd als een alias voor een bestaande variabele. Het belangrijkste gebruik van deze variabele werkt als een parameter die werkt als een pass-by-referentie. Dit wordt doorgegeven aan een functie. De functie waaraan dit wordt doorgegeven, werkt op de oorspronkelijke variabele in plaats van de kopie in een pass-by-waarde. De wijzigingen die in de functie worden aangebracht, worden ook buiten weerspiegeld.Pointervariabelen zijn variabelen die adres opslaan. In tegenstelling tot gebruikelijke variabelen die we hebben zoals int, double en char, worden geheugenadressen opgeslagen. Om het programmeren te vergemakkelijken, ontstaat de behoefte aan deze variabele. Het is een variabele die een waarde van een bepaald type kan opslaan.
VerklaringDeclaratie van een C ++ referentievariabele wordt gedaan door een '&' symbool toe te voegen voor een variabele. Wanneer het wordt gebruikt met een uitdrukking, geeft dit aan dat het werkt als een adres van een operator. Het wordt gebruikt om een ​​bestaande naam een ​​andere naam te geven.
Syntaxis:
type & newName = bestaande naam ;
// of
type & newName = bestaande naam ;
// of
type & newName = bestaande naam ;
Voor bijvoorbeeld:
/ * Testreferentieverklaring en initialisatie * /
#include
namespace std; gebruiken;
int main () (
string name = "Priya"; // Declareer een stringvariabele met de naam name
string & refName = name; // Declareer een verwijzing (alias) naar de variabelenaam
// Zowel refName als name verwijzen naar dezelfde waarde van "Priya"
cout << naam << endl; // Het drukt de waarde van de variabele "Priya" af
cout << refName << endl; // Het drukt de waarde van referentie "Priya" af
Wijzig nu de waarde van Naam
refName = "Karishma"; // Wijs een nieuwe waarde toe aan refName
cout << refName << endl;
cout << naam << endl; // Waarde van nummer verandert ook "Karishma"
name = "Snehal"; // Wijs een nieuwe waarde toe aan de naam
cout << namer << endl;
cout << refName << endl; // Waarde van refName verandert ook "Snehal"
)
Dit betekent dat de waarden van een referentievariabele kunnen worden gewijzigd in het origineel en de kopie van de variabele.
Voordat u een aanwijzer ergens in het programma gebruikt, moet deze van tevoren worden gedeclareerd. Om een ​​pointer te declareren en het systeem te laten weten dat het een pointer is, wordt een variabele voorafgegaan door een '*'. Een aanwijzer gaat vergezeld van het gegevenstype dat een int of een double kan zijn, enz.
Syntaxis:
type * pntr ; // Declareer een pointervariabele met de naam pntr als een pointer van het type
// of
type * pntr ;
// of
type * pntr ;
Voor bijvoorbeeld:
int * newPtr; // Declareer een pointer variabele genaamd newPtr wijzend naar een int (een int pointer)
Deze aanwijzer houdt het adres vast. Dat adres heeft een int-waarde.
dubbel * newdPtr; // Declareer een dubbele wijzer
De * geeft aan dat een aanwijzer wordt gedeclareerd en niet als operator fungeert.
HerplaatsingEen referentievariabele kan niet opnieuw worden toegewezen.
Voorbeeld:
int x = 5;
int y = 6;
int & r = x;
Een aanwijzer kan opnieuw worden toegewezen en deze eigenschap is handig wanneer een ontwikkelaar gegevensstructuren zoals gekoppelde lijsten, bomen, etc. implementeert.
Voorbeeld:
int x = 5;
int y = 6;
int * p;
p = & x;
p = & y;
Geheugen adresEen referentievariabele heeft hetzelfde adres als de oorspronkelijke variabele. Deze referenties kunnen worden doorgegeven aan verschillende functies, ze kunnen worden opgeslagen in verschillende klassen, enz. Een referentie verwijst nooit naar een nieuwe variabele totdat de oude is verwijderd of buiten bereik valt.Een pointer heeft zijn eigen geheugenadres en slaat dit op in de stapel. Een aanwijzer is een onafhankelijke variabele en er kunnen nieuwe waarden aan zichzelf worden toegewezen.
Null waardeAan een verwijzing kan geen nulwaarde worden toegewezen.Aan een aanwijzer kan direct een nulwaarde worden toegewezen.
argumentenEr kan naar een referentievariabele worden verwezen met bypass op waarde. Hier worden argumenten doorgegeven aan de functies. Er wordt een kloon gemaakt en met behulp van de functie naar de functie verzonden. Wijzigingen in de kopie hebben geen effect op de oorspronkelijke variabele.Als we de originele kopie willen wijzigen, kan dit door een wijzer van het object in de functie te plaatsen. Dit staat bekend als pass by reference.
Wanneer te gebruikenReferenties hebben indirect toegang tot een variabele. Overweeg het volgende voorbeeld:
laatste dag
(
Zondag maandag, …
);
Als we een variabele definiëren
dag x;
En we willen een operator overbelasten met de verklaring, dan kunnen we schrijven zoals hieronder:
dag & operator ++ (dag & d)
(
d = (dag) (d + 1);
terugkeer d;
)
Kort gezegd kan dit worden gebruikt in functieparameters en referentietypen.
Het gebruik van verwijzingen is zonder voorafgaande aangifte.
dag * operator ++ (dag * d);
Dit kan worden gebruikt om gegevensstructuren en rekenkundige bewerkingen van de aanwijzer te implementeren.

Conclusie - C ++ Reference vs Pointer

C ++ Reference vs Pointer zijn moeilijk om aan te werken, maar ze verbeteren de efficiëntie van het programma in grote mate. Beide C ++ Reference vs Pointer hebben hun eigen gebruik en dienen hun eigen doeleinden. U kunt pointers gebruiken wanneer u datastructuren en algoritmen wilt implementeren, terwijl referenties wanneer u functies en parameters met retourtypen wilt gebruiken.

Aanbevolen artikel

Dit is een gids geweest voor de belangrijkste verschillen tussen C ++ Reference versus Pointer. Hier bespreken we ook de C ++ Reference versus Pointer key-verschillen met infographics en vergelijkingstabel. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. Python versus C ++ verschillen
  2. C versus C ++ Prestaties - Beste verschillen
  3. MongoDB tegen Cassandra
  4. Mobx vs Redux
  5. C ++ Vector vs Array: Top Differences
  6. MongoDB versus DynamoDB: Functies
  7. MongoDB versus SQL: wat zijn de functies
  8. C vs C #: Functies