Aanbevolen, 2024

Editor'S Choice

Verschil tussen aanwijzer en referentie

De "pointer" en "reference" worden beide gebruikt om een ​​andere variabele aan te wijzen of te verwijzen. Maar het fundamentele verschil tussen beide is dat een pointer-variabele verwijst naar een variabele waarvan de geheugenlocatie erin is opgeslagen. De referentievariabele is een alias voor een variabele die eraan is toegewezen. De onderstaande vergelijkingstabel onderzoekt de andere verschillen tussen een aanwijzer en een verwijzing.

Vergelijkingstabel

Basis voor vergelijkingWijzerReferentie
basis-De aanwijzer is het geheugenadres van een variabele.De referentie is een alias voor een variabele.
Komt terugDe variabele pointer retourneert de waarde op het adres dat is opgeslagen in de pointervariabele die wordt voorafgegaan door het aanwijsteken '*'.De referentievariabele retourneert het adres van de variabele voorafgegaan door het verwijzingsteken '&'.
operators*, ->&
Null-verwijzingDe pointer variabele kan verwijzen naar NULL.De referentievariabele kan nooit verwijzen naar NULL.
initialisatieEen niet-geïnitialiseerde aanwijzer kan worden gemaakt.Een niet-geïnitialiseerde verwijzing kan nooit worden gemaakt.
Tijd van initialisatieDe pointervariabele kan op elk willekeurig tijdstip in het programma worden geïnitialiseerd.De referentievariabele kan alleen worden geïnitialiseerd op het moment dat deze wordt gemaakt.
initialisatieDe pointer-variabele kan zo vaak als nodig opnieuw worden geïnitialiseerd.De referentievariabele kan nooit opnieuw worden geïnitialiseerd in het programma.

Definitie van Pointer

Een "pointer" is een variabele die de geheugenlocatie van een andere variabele bevat. De operators die door de pointer-variabele worden gebruikt, zijn * en ->. De declaratie van de pointervariabele bevat het basisgegevenstype gevolgd door het '*' teken en de variabelenaam.

 type * var_name; 

Laten we de aanwijzer begrijpen met behulp van een voorbeeld.

 int a = 4; int * ptr = & a; cout < 

Hier hebben we een integer variabele a en een pointer variabele ptr die het adres van variabele a opslaat.

Pointer rekenkunde

De pointer variabele kan worden bediend met twee rekenkundige operatoren die "optellen" en "aftrekken" zijn. De toevoeging wordt "increment" genoemd en de aftrekking wordt "decrement" genoemd. Als een aanwijsvariabele wordt opgehoogd, verwijst deze naar de geheugenlocatie van de volgende variabele van het basistype. Als een aanwijsvariabele wordt verlaagd, wijst deze naar de geheugenlocatie van de vorige variabele van het basistype. Daarom kan een array efficiënt worden benaderd door een pointervariabele.

Meerdere indirecties

Een pointer wijst naar de andere pointervariabele die naar de doelwaarde wijst. Dit soort aanwijzer wordt altijd geïnitialiseerd met het adres van een andere aanwijsvariabele. De verklaring van een aanwijzer naar een aanwijzer is als volgt.

 typ ** var_name; 

Laten we het bestuderen met een voorbeeld.

 int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; cout < 

Functie aanwijzer

Omdat we weten dat een functie geen variabele is, heeft deze nog steeds een geheugenlocatie die kan worden toegewezen aan een pointervariabele. Zodra een aanwijzer naar een functie verwijst, kan de functie met die functie aanwijzer worden aangeroepen.

De belangrijke punten om te onthouden over de aanwijzer.

  • De pointer-variabele kan zonder initialisatie worden gemaakt en kan overal in het programma worden geïnitialiseerd.
  • De pointer-variabele kan opnieuw worden geïnitialiseerd naar een andere variabele.
  • De pointer variabele kan verwijzen naar NULL.

Definitie van referentie

De referentievariabele wordt gebruikt om te verwijzen naar de variabele die aan die referentievariabele is toegewezen. De operator gebruikt door de referentievariabele is '&'. De declaratie van een referentievariabele bevat het basistype gevolgd door het teken '&' en de naam van de variabele.

 type & refer_var_name = var_ naam; 

Hier, het type is het datatype, bevestigt de & -operator dat het een referentievariabele is. De refer_var_name is de naam van de referentievariabele. De var_name is de naam van de variabele, die we willen dat de referentievariabele verwijst.

Laten we de referentievariabele met behulp van een voorbeeld begrijpen.

 int a = 4; int & b = a; // b verwijst naar ab = 6; // nu a = 6 

Hier wordt aan de variabele van het type int een waarde 4 toegekend. Aan de referentievariabele wordt de variabele a toegewezen, dwz b is een alias van a. Wanneer we nu een andere waarde toewijzen aan b, wijzigen we de waarde van a. Daarom kan worden gezegd dat de wijzigingen die worden aangebracht in een referentievariabele ook voorkomen in de variabele waarnaar wordt verwezen door die referentievariabele.

Het belangrijkste punt is dat de referentievariabele moet worden geïnitialiseerd op het moment dat deze wordt gemaakt. Zodra de referentievariabele is geïnitialiseerd met een variabele, kan deze niet opnieuw worden geïnitialiseerd om een ​​andere variabele te verwijzen. Op het moment dat u een waarde toekent aan een referentievariabele, wijst u die waarde toe aan een variabele waarnaar een referentievariabele wijst. De referentievariabele kan nooit verwijzen naar NULL. Rekenkunde kan niet worden uitgevoerd op een referentievariabele.

De referentievariabele kan op drie manieren worden gebruikt:

  • Als een functie retourwaarde.
  • Als een functieparameter.
  • Als een zelfstandige referentie.

Belangrijkste verschillen tussen aanwijzer en referentie

  1. Verwijzing is als het maken van een andere naam om een ​​variabele door te verwijzen zodat deze met verschillende namen kan worden doorverwezen. Aan de andere kant is een aanwijzer gewoon een geheugenadres van een variabele.
  2. Een pointer-variabele die voorafgegaan wordt door '*' retourneert de waarde van een variabele waarvan het adres in de variabele pointer is opgeslagen. Een referentievariabele die voorafgegaan wordt door '&' retourneert het adres van die variabele.
  3. Aanwijzer-operators zijn * en -> terwijl de referentie-operator & is.
  4. Een pointervariabele als het adres van een variabele niet naar nul wijst. Aan de andere kant kan een referentievariabele nooit verwijzen naar Null.
  5. U kunt altijd een geïndividualiseerde pointervariabele maken, maar we maken een referentie wanneer we een alias van een bepaalde variabele nodig hebben, zodat u nooit een unitialize refernce kunt maken.
  6. U kunt een aanwijzer opnieuw initialiseren, maar als u eenmaal hebt geïnitialiseerd, kunt u deze niet opnieuw initialiseren.
  7. U kunt op elk moment een lege aanwijzer maken en deze initialiseren, maar u moet refrence alleen initialiseren als u een referentie maakt.

Notitie:

Java biedt geen ondersteuning voor pointers.

Conclusie

De aanwijzer en verwijzing beide worden gebruikt om een ​​andere variabele aan te wijzen of te verwijzen. Maar beide verschillen in gebruik en uitvoering.

Top