Innan vi diskuterar skillnaden mellan pekare och referens, låt oss först titta på betydelsen av dessa två termer kortfattat. I ett program upptar data minne. Den exakta platsen för minnet i vilket uppgifterna placerades i vid en körtid bör vara kända för att få tillgång till dem. Pekarevariabler och referensvariabler används för att komma åt dessa data och manipulera de minnesadresser de är på. Det vill säga både pekare och referenser kan användas för att hänvisa till föremål indirekt. De har i huvudsak minnesadresser som deras värden. De nyckelskillnad mellan en pekare och en referens är det en pekare är en variabel som lagrar adressen till minnesplatsen för en annan variabel medan a referens är en variabel som avser en annan variabel. De två mekanismerna, de pekare och referens, har olika syntax och användning.
En pekare är ett programmeringsspråkobjekt som lagrar minnesadressen till ett värde i datorminnet.
int i = 5;
int * ptr = & i;
Den första raden definierar en variabel initialiserad med ett värde av 5. Den andra raden definierar en pekare till variabelns minnesadress. Här anges "ptr" som ett objekt av typen "pekare till int" vars initialvärde är adressen till objektet i. Väsentligen ptr-variabel pekar på jag genom att lagra sin minnesadress.
Uppringning av det värde som lagras på ett minnesplats kallas dereferencing. Operatören * används för att dereferera pekaren. Efter deklarationerna är det indirekta uttrycket * ptr dereferences ptr att hänvisa till i.
För att ändra värdet på jag kan följande tilldelning användas;
* ptr = 20;
Pekare kan omplaceras för att även referera till olika objekt.
en nullpekare är en speciell typ av pekare. En nollpekare betecknas ofta med 0 eller null och pekar på ingenting. Det är bra att använda en nollpekare om du inte har en exakt adress som ska tilldelas pekaren. Denna uppgift kan användas i logiska operationer och förhållanden.
Pekare kan vara brukade lagra och hantera adresserna till dynamiskt tilldelat minne. Implementering och kontroll av datastrukturer som stackar, köer och listor kan göras effektiv med hjälp av pekare. Till exempel kan en kö ha två pekare; huvudpekare och svanspekare. Pekare kan också användas för att skicka variabler genom deras adress, vilket skulle göra det möjligt att ändra värdet. Direkthantering av minnes- eller minneskortade enheter kan också hanteras med hjälp av pekare.
Pekare låter både skyddad och oskyddad åtkomst till minnet adresseras. Därför måste nödvändiga försiktighetsåtgärder vidtas för att verifiera att innehållet på en pekare är giltigt. Annars kan borttagning av en pekare med en ogiltig minnesadress orsaka att programmet kraschar.
Pekare stöds på språk som C, C ++, Pascal och många monteringsspråk.
Pekare en pekar på minnesadressen i samband med variabeln b.
En referens är helt enkelt en alternativ identifierare för ett värde lagrat i minnet. Det gör det möjligt för ett program att indirekt få tillgång till ett visst datum.
int i = 5;
int & ref = jag;
Den första raden definierar en variabel initialiserad med ett värde av 5. Den andra raden förklarar 'ref' som ett objekt av typen 'referens till int' som refererar till i. En referens skiljer sig från data i sig givet att en referens implementeras som den fysiska adressen till det specifika datum som lagras i minnet.
När en gång definierats kan en referens inte omfördelas ett nytt värde. En referens hänvisar alltid till det objekt som det initialiseras med. I följande uppgift hänvisar ref fortfarande till i, men värdet är nu 20.
ref = 20;
Enligt ovanstående exempel kräver inte hänvisningsreferenser några operatörer.
Referenser kan användas när en variabel alltid hänvisar till ett objekt. Detta beror på att, till skillnad från pekare, referenser inte kan vara noll och måste alltid tilldelas vid initialisering. Eftersom referenser alltid ska referera till något objekt, gör en sådan variabel en referens säkerställer att programmet skulle fungera effektivt och korrekt. Med tanke på att det inte finns några nollreferenser behöver validering av en referensvariabel inte testas.
Referensvariabler kan vara brukade effektivt överföra stora data som argument till förfaranden. Referenser används också för att dela stora data mellan olika kodområden eftersom varje kod innehåller en hänvisning till data.
Programmeringsspråk som C ++, Java, Python, Perl, PHP, Ruby, etc. support referenser.
Pekare: En pekare är minnesadressen till ett objekt som lagras i datorminnet.
Referens: En referens är en alternativ identifierare eller ett alias för ett objekt.
Pekare: En pekare deklareras med * operatören.
Referens: En referens förklaras med & operatören.
Pekare: En pekervariabel kräver att * operatören avlägsnas.
Referens: En referensvariabel kräver att ingen operatör avlägsnas.
Pekare: Pekare kan initieras till null. Sådana variabler kallas nullpekare.
Referens: Referenser kan inte initialiseras till null. Det finns ingen sådan sak som en nollreferens. En referens måste alltid referera till ett objekt.
Pekare: En pekarevariabel kan omfördelas för att referera till olika objekt.
Referens: En referensvariabel kan inte omfördelas. Det hänvisar alltid till föremålet med vilket det initialiserades.
Pekare: Pointervariabler ska användas när möjligheten att hänvisa till ingenting existerar eller när det är nödvändigt att hänvisa till olika saker vid olika tidpunkter.
Referens: Referensvariabler ska användas när det alltid finns ett objekt att referera till och när det inte är nödvändigt att använda referensvariabeln för att referera till något annat än det objektet.
Pekare: Pointervariabler kan användas för att implementera algoritmer och datastrukturer.
Referens: Referensvariabler kan användas i funktionsparametrar, och returtyper definierar användbara gränssnitt.
Pekare: Programmeringsspråk som C, C ++, Pascal och många monteringsspråk stödpekare.
Referens: Programmeringsspråk som C ++, Java, Python, Perl, PHP, Ruby, etc. support referenser.
Image Courtesy: "Pointers" av Den här filen gjordes av User: SvenTranslation.Own work.This vektorbild skapades med Inkscape.(CC BY-SA 3.0) via Commons -