Verschil tussen wijzer en referentie | Aanwijzer vs Referentie

Anonim

Belangrijkste verschil - Aanwijzer versus referentie

Laten we eerst de betekenis van deze twee termen kort bespreken voordat u het verschil tussen wijzer en referentie bespreekt. In een programma worden gegevens opgeslagen. De exacte locatie van het geheugen waarin de gegevens werden geplaatst op een uitvoeringstijd, moeten bekend zijn om ze te kunnen openen. Wijzervariabelen en verwijzingsvariabelen worden gebruikt om deze gegevens te openen en de geheugenadressen die ze zijn, te manipuleren. Dat wil zeggen, beide punten en referenties kunnen gebruikt worden om indirect naar objecten te verwijzen. Ze bevatten in wezen geheugenadressen als hun waarden. Het sleutelverschil tussen een aanwijzer en een referentie is dat een wijzer een variabele is die het adres van de geheugenlocatie van een andere variabele opslaat, terwijl een referentie een variabele is die verwijst naar naar een andere variabele. De twee mechanismen, de aanwijzer en referentie, hebben verschillende syntaxis en gebruik .

Wat is een wijzer?

Een aanwijzer is een programmeertaalobject dat het geheugenadres van een waarde opslaat in het computergeheugen.

In C ++ syntax;

int i = 5;

int * ptr = & i;

De eerste regel definieert een variabele geïnitialiseerd met een waarde van 5. De tweede regel definieert een wijzer naar het geheugenadres van de variabele. Hier wordt de 'ptr' verklaard als object van type 'pointer to int' waarvan de initiële waarde het adres van object is i. In hoofdzaak ptr variabele punten naar ik door het geheugen adres op te slaan.

De waarde die op een geheugenplaats is opgeslagen, wordt dereferencing genoemd. De * operator wordt gebruikt om de wijzer te onthouden. Nadat de verklaringen zijn gedaan, de indirecte uitdrukking * ptr dereferences ptr om te verwijzen naar i.

Om de waarde van i te wijzigen, kan de volgende opdracht worden gebruikt;

* ptr = 20;

Pointers kunnen opnieuw worden toegewezen om ook naar verschillende objecten te verwijzen.

A nullwijzer is een speciaal type aanwijzer. Een nulaanwijzer wordt vaak aangeduid met 0 of nul en wijst op niets. Het is een goede praktijk om een ​​nullwijzer te gebruiken in het geval dat u geen exact adres heeft dat aan de aanwijzer moet worden toegewezen. Deze opdracht kan gebruikt worden in logische bewerkingen en omstandigheden.

Pointers kunnen worden gebruikt om de adressen van dynamisch toegewezen geheugen op te slaan en te beheren. Implementatie en controle van datastructuren, zoals stapels, wachtrijen en lijsten, kunnen efficiënt worden gemaakt met behulp van aanwijzingen. Bijvoorbeeld, een wachtrij kan twee pointers hebben; hoofdwijzer en staartwijzer.Punten kunnen ook worden gebruikt om variabelen door hun adres te passeren, waardoor de waarde kan worden gewijzigd. Direct beheren van geheugen of geheugengerichte apparaten kan ook worden behandeld met behulp van aanwijzingen.

Pointers laten zowel beveiligde als onbeschermde toegang tot geheugen toe. Daarom moeten de nodige voorzorgsmaatregelen worden getroffen om te controleren of de inhoud van de aanwijzer geldig is. Anders kan het afwijzen van een aanwijzer met een ongeldig geheugenadres ervoor zorgen dat het programma crasht.

Pointers worden ondersteund in talen zoals C, C ++, Pascal en vele montagetalen.

Aanwijzer a naar het geheugenadres geassocieerd met variabele b.

Wat is een referentie?

Een referentie is gewoon een alternatief identifier voor een waarde opgeslagen in het geheugen . Het stelt een programma in staat indirect toegang te krijgen tot een bepaald datum.

In C ++ syntax;

int i = 5;

int & ref = i;

In de eerste regel wordt een variabele geïnitialiseerd met een waarde van 5. De tweede regel verklaart 'ref' als een object van type 'referentie naar int', dat betrekking heeft op i. Een verwijzing is anders dan de gegevens zelf, aangezien een referentie is geïmplementeerd als het fysieke adres van het bepaalde datum dat in het geheugen is opgeslagen.

Eenmaal gedefinieerd kan een referentie niet een nieuwe waarde worden toegewezen. Een verwijzing verwijst altijd naar het object waarmee het geïnitialiseerd is. In de volgende opdracht verwijst ref nog steeds naar i, maar de waarde is nu 20.

ref = 20;

Volgens het bovenstaande voorbeeld vereist verwijderingsreferenties geen operatoren.

Verwijzingen kunnen gebruikt worden wanneer een variabele altijd naar een object verwijst. Dit komt doordat, in tegenstelling tot verwijzingen, verwijzingen niet nul zijn en altijd bij initialisatie moeten worden toegewezen. Aangezien verwijzingen altijd naar een object moeten verwijzen, maakt zo'n variabele een referentie zorg dat het programma efficiënt en correct werkt. Aangezien er geen null referenties zijn, moet de validiteit van een referentievariabele niet worden getest.

Referentievariabelen kunnen gebruikt worden om grote gegevens efficiënt te verzenden als argumenten voor procedures . Referenties worden ook gebruikt om grote gegevens te delen tussen verschillende code gebieden, aangezien elke code een verwijzing naar de gegevens bevat.

Programmeertaal zoals C ++, Java, Python, Perl, PHP, Ruby, enz. Ondersteuningsreferenties.

Wat is het verschil tussen wijzer en referentie?

Definitie van aanwijzer en referentie

Aanwijzer: Een wijzer is het geheugenadres van een object dat in het computergeheugen is opgeslagen.

Referentie: Een referentie is een alternatieve identificatiecode of een alias voor een object.

Kenmerken van wijzer en referentie

Verklaring

Aanwijzer: Een aanwijzer wordt verklaard met de * operator.

Referentie: Een referentie wordt verklaard met de & operator.

Dereferencing

Aanwijzer: Een wijzervariabele vereist dat de * -operator opnieuw worden geherferdeerd.

Referentie: Een referentievariabele vereist dat geen operator wordt genereerd.

Initialiseren van

Pointer: Pointers kunnen worden geïnitialiseerd tot null.Dergelijke variabelen worden nullpinters genoemd.

Referentie: Verwijzingen kunnen niet worden geïnitialiseerd naar null. Er is niet zoiets als een nulverwijzing. Een verwijzing moet altijd naar een object verwijzen.

Toewijzingen

Wijzer: Een wijzervariabele kan opnieuw worden toegewezen om te verwijzen naar verschillende objecten.

Referentie: Een referentievariabele kan niet opnieuw worden toegewezen. Het verwijst altijd naar het object waarmee het is geïnitialiseerd.

Gebruik

Aanwijzer: Wijzervariabelen moeten worden gebruikt wanneer de mogelijkheid om niets te verwijzen bestaat of wanneer er op verschillende momenten verschillende dingen moeten worden verwezenlijkt.

Referentie: Referentievariabelen moeten worden gebruikt wanneer er altijd een object is waarnaar verwijst moet worden en wanneer deze referentievariabele niet moet worden gebruikt om te verwijzen naar iets anders dan dat object.

Toepassing van gebruik

Wijzer: Wijzervariabelen kunnen worden gebruikt om algoritmen en data structuren uit te voeren.

Referentie: Referentievariabelen kunnen in functieparameters worden gebruikt, en retourtypes definiëren nuttige interfaces.

Gebruikte talen:

Pointer: Programmeertaal, zoals C, C ++, Pascal en vele montage talen ondersteunen pointers.

Referentie: Programmeertaal zoals C ++, Java, Python, Perl, PHP, Ruby, enz. Ondersteuningsreferenties.

Image Courtesy: "Pointers" door Dit bestand is gemaakt door User: SvenTranslation. Eigen werk. Deze vector afbeelding is gemaakt met Inkscape. (CC BY-SA 3. 0) via Commons -