Skillnad mellan pekare och referens

Båda pekarna och referenserna är de mest kraftfulla funktionerna i C och C ++ som gör att programmerare kan manipulera minnesadress direkt för effektiv minneshantering.

Båda är variabler som används för att hänvisa till andra objekt indirekt och de delar några vanliga funktioner på ytan. Även om de delar många gemensamma möjligheter, är de också mycket komplexa att förstå.

En pekare är en variabel som innehåller minnesadressen till en annan variabel, medan en referens är som en pekare som kan användas för att indirekt hänvisa till en annan variabel.

De flesta programmerare verkar utveckla viss förståelse om när man ska använda pekare och när man ska använda referenser, men de stöter ofta på problem vars lösning verkar oklart.

Så för att bättre förstå filosofin, låt oss förstå skillnaden mellan de två.

Vad är en pekare?

Varje variabel är en minnesplats som definieras av adressen och är kopplad till en identifierare som innehåller något värde som kan ändras under ett program. I enkla termer är variabel en symbol som representerar en kvantitet.

En pekare är en variabel som innehåller minnesadressen till en annan variabel. En pekare är ingenting, men en adress och en variabel som lagrar en pekare kallas en pekervariabel.

Tanken är att använda identifierare (eller namn) istället för numeriska adresser för att underlätta programmeringsbörden och därigenom minska programkomplexiteten. Eftersom dessa adresser hänvisar till faktiska platser i datorminnet kan pekare användas för att komma åt och manipulera innehåll som är lagrat i minnet.

Liksom varje variabel eller konstant måste pekare deklareras för sina typer. Eftersom pekare innehåller minnesadresser som tillhör en separat datatyp måste de deklareras med hjälp av pekare innan du kan arbeta med dem. Den allmänna formen av en pointerdeklaration är:

Data_type * var-namn;

Här är "Data_type" pekarens bastyp och "var-name" är pekarvariabeln. Asterisken (*) här används för att deklarera pekaren som betecknar variabeln "var-name" som en pekervariabel.

int * p; // heltalspekare

float * x; // float pekare

Här pekar variabeln "p" på en heltalsdatatyp som deklareras som "int" som refererar till datatypen för variabeln. På samma sätt avser "float" i det andra exemplet datatypen för variabeln "x" som faktiskt betecknas som en pekare till en variabel punkt variabel.

Vad är en referens?

En referens är som en pekare med indirekt tillgång till en variabel. Det är som ett alias för en annan variabel, vilket betyder att det bara är ett annat namn för en redan existerande variabel.

Det gör det möjligt för programmerare att skapa ett andra namn för variabeln som de kan använda för att manipulera innehållet som är lagrat i den variabeln. Det är en enhet som är ett alias för en annan variabel och den har samma adress som den ursprungliga variabeln. Den stöder pass-by-reference som fungerar som funktionella parametrar och när den definieras för att referera till en variabel, kan den inte återställas vilket innebär att den inte kan hänvisas till en annan variabel.

Till skillnad från pekare behöver de inte uppgradera operatören för att få tillgång till värdet. i själva verket kan de användas som normala variabler.

int jag;

int & ri = i;

Här är "ri" en heltalreferens initialiserad till "i". Det förklarar "ri" som ett objekt av typen "referens till int". En referens kan enkelt förväxlas med en pekare som är en oberoende variabel, vars adressvärden inte kan omfördelas en gång skapad.

Skillnad mellan pekare och referens

  1. Grunderna för pekare och referens

- Båda ger nästan lika förmåga när det gäller användbarhet och skillnaden kan vara knepig. En pekare är bara en variabel som lagrar minnesadressen till en annan variabel, medan en referens är som ett alias för en redan existerande variabel. Det skapar ett andra namn för en variabel som kan användas för att ändra innehållet som är lagrat i den variabeln.

  1. Förklaring av pekare och referens

- En pekare är som vilken annan variabel som lagrar en bit data. Till skillnad från andra variabler lagrar pekvariabler minnesadresser istället för värden. En pekare avlägsnas genom att använda indirektionsoperatören * för att komma åt minnesplatsen för den variabel som den pekar på. En referens, å andra sidan, behöver inte någon dereferencingoperatör för att komma åt värdet.

  1. Omplacering av pekare och referens

- Till skillnad från pekare som kan initieras när som helst måste referenser tilldelas vid initialisering. Pekare kan nås direkt, medan referenser inte kan nås direkt.

  1. Minnesadress för pekare och referens

- En pekarvariabel har sin egen plats i minnet, vilket innebär att när du förklarar en pekare anger du en plats som är en minnesadress tilldelad varje minnesenhet. Pekervariabeln har samma adress där den sparas i minnet. En referensvariabel är å andra sidan ett alias för en annan variabel därigenom tar adressen av referensvariabeln.

  1. NULL värde för pekare och referens

- NULL representerar slutet av listan vilket betyder att den anger att värdet är okänt och det anger att variabeln inte har ett giltigt adressutrymme. NULL-värdet kan tilldelas en pekarvariabel direkt som tyder på att den inte pekar någonstans, medan NULL inte kan tilldelas en referensvariabel.

Pointer vs Reference: Jämförelse Diagram

Sammanfattning av Pointer vs Reference

Pekare har alltid varit bland de favoritämnen som diskuterades av C / C ++-programmerare tills referenser kom till bilden. Referenser liknar påpekar men har en rättvis andel av fördelar och nackdelar i jämförelse. Medan båda kan användas för att ändra lokala variabler av en funktion inom en annan funktion, har de sina skillnader. Båda är kraftfulla funktioner i C och C ++ som gör det möjligt att direkt manipulera minnet, men med några undantag. En pekare har minnesadressen till en variabel, medan en referens bara är ett alias för en annan variabel.