Skillnad mellan pekare och referens | Pointer vs Reference

Anonim

Huvudskillnad - Pointer vs Reference

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. Pekvariabler och referensvariabler används för att komma åt dessa data och hantera minnesadresserna 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. nyckelskillnaden mellan en pekare och en referens är att en pekare är en variabel som lagrar adressen till minnesplatsen för en annan variabel medan en referens är en variabel som hänvisar till till en annan variabel. De två mekanismerna, den pekaren och referensen, har olika syntax och användning .

Vad är en pekare?

En pekare är ett programmeringsspråkobjekt som lagrar minnesadressen till ett värde i datorminnet.

I C ++-syntax;

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.

Hämtning av värdet som lagras på en 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.

A 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 används för att 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.

Pointer a pekar på minnesadressen associerad med variabel b.

Vad är en referens?

En referens är helt enkelt en alternativ identifierare för ett värde som lagras i minnet . Det gör det möjligt för ett program att indirekt få tillgång till ett visst datum.

I C ++-syntax;

int i = 5;

int & ref = i;

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.

En gång definierad 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 det ovanstående exemplet behöver inte borttagningsreferenser ha några operatörer.

Referenser kan användas när en variabel alltid refererar 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 användas för att effektivt överföra stora data som argument till procedurer . 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. supportreferenser.

Vad är skillnaden mellan pekare och referens?

Definition av pekare och referens

Pointer: En pekare är minnesadressen till ett objekt som är lagrat i datorminnet.

Referens: En referens är en alternativ identifierare eller ett alias för ett objekt.

Kännetecken för pekare och referens

Deklaration

Pekare: En pekare deklareras med * operatören.

Referens: En referens förklaras med & operatören.

Dereferencing

Pointer: En pekervariabel kräver att * operatören avlägsnas.

Referens: En referensvariabel kräver att ingen operatör avlägsnas.

Initialisering

Pointer: Pointer kan initialiseras 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.

Omfördelningar

Pointer: En pekervariabel 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.

Användning

Pointer: 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 hänvisa till något annat än det objektet.

Användning av användning

Pointer: 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.

Använda språk:

Pointer: Programmeringsspråk som C, C ++, Pascal och många monteringsspråk stödpekare.

Referens: Programmeringsspråk som C ++, Java, Python, Perl, PHP, Ruby, etc. supportreferenser.

Image Courtesy: "Pointers" av Den här filen gjordes av User: SvenTranslation. Eget arbete. Denna vektorbild skapades med Inkscape. (CC BY-SA 3. 0) via Commons -