Voordat we het verschil tussen aanwijzer en referentie bespreken, moeten we eerst even kijken naar de betekenis van deze twee termen. In een programma bezetten gegevens het geheugen. De exacte locatie van het geheugen waarin de gegevens zijn geplaatst tijdens een uitvoeringstijd moet bekend zijn om er toegang toe te hebben. Aanwijsvariabelen en referentie variabelen worden gebruikt om toegang tot deze gegevens te krijgen en de geheugenadressen te manipuleren waar ze zich bevinden. Dat wil zeggen dat zowel wijzers als verwijzingen kunnen worden gebruikt om indirect naar objecten te verwijzen. Ze houden in wezen geheugenadressen als hun waarden. De belangrijk verschil tussen een aanwijzer en een verwijzing is dat een pointer is een variabele die het adres van de geheugenlocatie van een andere variabele opslaat terwijl een referentie is een variabele die naar een andere variabele verwijst. De twee mechanismen, de wijzer en referentie, hebben verschillende syntaxis en gebruik.
Een aanwijzer is een programmeertaal-object dat het geheugenadres van een waarde opslaat in het computergeheugen.
int i = 5;
int * ptr = & i;
De eerste regel definieert een variabele die is geïnitialiseerd met een waarde van 5. De tweede regel definieert een aanwijzer naar het geheugenadres van de variabele. Hier wordt de 'ptr' gedeclareerd als een object van het type 'pointer to int' waarvan de beginwaarde het adres van object i is. In wezen ptr variabele punten naar i door het opslaan van zijn geheugenadres.
Het verkrijgen van de waarde die is opgeslagen op een geheugenlocatie wordt aangeroepen dereferentie. De operator * wordt gebruikt om de verwijzing te dereferen. Nadat de aangiften zijn gedaan, wordt de indirecte uitdrukking * ptr dereferences ptr om te verwijzen naar i.
Om de waarde van i te wijzigen, kan de volgende toewijzing worden gebruikt;
* ptr = 20;
Pointers kunnen opnieuw worden toegewezen om naar verschillende objecten te verwijzen.
EEN nul punten is een speciaal soort aanwijzer. Een lege aanwijzer wordt vaak aangeduid met 0 of nul en wijst naar niets. Het is een goede gewoonte om een lege aanwijzer te gebruiken in het geval dat er geen exact adres aan de aanwijzer is toegewezen. Deze toewijzing kan worden gebruikt in logische bewerkingen en omstandigheden.
Pointers kunnen zijn gebruikt om de adressen van dynamisch toegewezen geheugen op te slaan en te beheren. Implementatie en controle van datastructuren zoals stacks, wachtrijen en lijsten kunnen efficiënt worden gemaakt met behulp van pointers. Een wachtrij kan bijvoorbeeld twee aanwijzers hebben; hoofd aanwijzer en staart aanwijzer. Aanwijzers kunnen ook worden gebruikt om variabelen op hun adres door te geven, waardoor de waarde kan worden gewijzigd. Directe manipulatie van geheugen of geheugen-toegewezen apparaten kan ook worden behandeld met behulp van verwijzingen.
Aanwijzers staan zowel beschermde als onbeschermde toegang tot het geheugen toe. Daarom moeten de nodige voorzorgsmaatregelen worden genomen om te controleren of de inhoud van een aanwijzer geldig is. Anders kan het volgen van een aanwijzer met een ongeldig geheugenadres ertoe leiden dat het programma vastloopt.
Pointers worden ondersteund in talen zoals C, C ++, Pascal en vele assembleertalen.
Wijzer een wijzend naar het geheugenadres geassocieerd met variabele b.
Een verwijzing is gewoon een alternatieve ID voor een waarde die is opgeslagen in het geheugen. Hiermee kan een programma indirect toegang krijgen tot een bepaald gegeven.
int i = 5;
int & ref = ik;
De eerste regel definieert een variabele die is geïnitialiseerd met een waarde van 5. De tweede regel declareert 'ref' als een object van het type 'verwijzing naar int' dat verwijst naar i. Een verwijzing is anders dan de gegevens zelf, aangezien een referentie wordt geïmplementeerd als het fysieke adres van het specifieke gegeven dat in het geheugen is opgeslagen.
Eenmaal gedefinieerd, kan aan een referentie geen nieuwe waarde worden toegewezen. Een verwijzing verwijst altijd naar het object waarmee het is geïnitialiseerd. In de volgende toewijzing verwijst ref nog steeds naar i, maar de waarde is nu 20.
ref = 20;
Volgens het bovenstaande voorbeeld vereisen verwijzingsreferenties geen operators.
Verwijzingen kunnen worden gebruikt als een variabele altijd naar een object verwijst. Dit komt omdat, in tegenstelling tot verwijzingen, verwijzingen niet nul kunnen zijn en altijd moeten worden toegewezen bij initialisatie. Omdat verwijzingen altijd naar een object moeten verwijzen, zorgt een dergelijke variabele ervoor dat het programma efficiënt en correct werkt. Aangezien er geen nulreferenties zijn, hoeft de geldigheid van een referentievariabele niet te worden getest.
Referentievariabelen kunnen zijn gebruikt om op een efficiënte manier grote gegevens door te geven als argumenten voor procedures. Verwijzingen worden ook gebruikt bij het delen van grote gegevens tussen verschillende codegebieden, omdat elke code een verwijzing naar de gegevens bevat.
Programmeertalen zoals C ++, Java, Python, Perl, PHP, Ruby, etc. ondersteunen referenties.
Wijzer: Een pointer is het geheugenadres van een object dat is opgeslagen in een computergeheugen.
Referentie: Een verwijzing is een alternatieve identifier of een alias voor een object.
Wijzer: Een pointer wordt aangegeven met de * -operator.
Referentie: Een referentie wordt gedeclareerd met de operator &.
Wijzer: Een pointer-variabele vereist dat de * -operator van dereferenced is.
Referentie: Een referentievariabele vereist dat geen enkele operator wordt afgeleid.
Wijzer: Pointers kunnen worden geïnitialiseerd op nul. Dergelijke variabelen worden null-wijzers genoemd.
Referentie: Referenties kunnen niet worden geïnitialiseerd als nul. Er bestaat niet zoiets als een nulreferentie. Een verwijzing moet altijd naar een object verwijzen.
Wijzer: Een pointervariabele kan opnieuw worden toegewezen om naar verschillende objecten te verwijzen.
Referentie: Een referentievariabele kan niet opnieuw worden toegewezen. Het verwijst altijd naar het object waarmee het werd geïnitialiseerd.
Wijzer: Pointervariabelen moeten worden gebruikt wanneer de mogelijkheid om naar niets te verwijzen bestaat of wanneer het nodig is om op verschillende tijdstippen naar verschillende dingen te verwijzen.
Referentie: Referentievariabelen moeten worden gebruikt wanneer er altijd een object moet zijn om naar te verwijzen en wanneer het niet verplicht is om die referentievariabele te gebruiken om naar iets anders dan dat object te verwijzen.
Wijzer: Aanwijsvariabelen kunnen worden gebruikt om algoritmen en gegevensstructuren te implementeren.
Referentie: Referentievariabelen kunnen worden gebruikt in functieparameters en retoursoorten definiëren bruikbare interfaces.
Wijzer: Programmeertalen zoals C, C ++, Pascal en veel ondersteuningstips voor assembleretalen.
Referentie: Programmeertalen zoals C ++, Java, Python, Perl, PHP, Ruby, etc. ondersteunen referenties.
Afbeelding Courtesy: "Pointers" door Dit bestand is gemaakt door Gebruiker: SvenTranslation.Own work.This vector image is gemaakt met Inkscape.(CC BY-SA 3.0) via burgerij -