Forskjellen mellom pekeren og referansen

Både pekere og referanser er de kraftigste funksjonene i C og C + + som tillater programmerere å manipulere minnesadressen direkte for effektiv minnehåndtering.

Begge er variabler som brukes til å referere til andre objekter indirekte og de deler noen vanlige funksjoner på overflaten. Selv om de deler mange felles evner, er de også svært komplekse å forstå.

En peker er en variabel som inneholder minneadressen til en annen variabel, mens en referanse er som en peker som kan brukes til å indirekte referere til en annen variabel.

De fleste programmører synes å utvikle litt forståelse om når du skal bruke pekere og når du skal bruke referanser, men de kommer ofte over problemer som løsningen av dem virker uklart.

For å bedre forstå filosofien, la oss forstå forskjellen mellom de to.

Hva er en peker?

Hver variabel er en minneplass som er definert av sin adresse og er parret med en identifikator som inneholder en verdi som kan endres i løpet av et program. Enkelt sagt er variabel et symbol som representerer en mengde.

En peker er en variabel som inneholder minneadressen til en annen variabel. En peker er ingenting, men en adresse og en variabel som lagrer en peker, kalles en pekervariabel.

Tanken er å bruke identifikatorer (eller navn) i stedet for numeriske adresser for å lette byrden av programmering, og dermed redusere programkompleksiteten. Siden disse adressene refererer til faktiske steder i datamaskinens minne, kan pekere brukes til å få tilgang til og manipulere innhold lagret i minnet.

Som alle variable eller konstante må poengene deklareres for sine typer. Siden pekere inneholder minneadresser som tilhører en egen datatype, må de deklareres ved hjelp av pekere før du kan jobbe med dem. Den generelle formen for en pointerdeklarasjon er:

Data_type * var-navn;

Her, "Data_type" er pekerenes grunntype og "varnavn" er pekervariabelen. Stjernen (*) her brukes til å erklære pekeren som betegner variabelen "varnavn" som en pekervariabel.

int * p; // heltallspeker

float * x; // float pointer

Her peker variabelen "p" på en heltalldatatype som er deklarert som "int" som refererer til datatypen til variabelen. På samme måte refererer "float" til datatypen til variabelen "x" i det andre eksemplet, som faktisk er betegnet som en peker til en flytende punktvariabel.

Hva er et referanse?

En referanse er som en peker med indirekte tilgang til en variabel. Det er som et alias for en annen variabel, noe som betyr at det bare er et annet navn på en allerede eksisterende variabel.

Det lar programmerere lage et andre navn for variabelen som de kan bruke til å manipulere innholdet som er lagret i den variabelen. Det er en enhet som er et alias for en annen variabel, og den har samme adresse som den opprinnelige variabelen. Den støtter pass-by-reference som fungerer som funksjonelle formelle parametere, og når den er definert for å referere til en variabel, kan den ikke resettes, noe som betyr at den ikke kan refereres til en annen variabel.

I motsetning til pekere trenger de ikke dereferencing operatør for å få tilgang til verdien; Faktisk kan de brukes som vanlige variabler.

int jeg;

int & ri = i;

Her er "ri" et heltall referanse initialisert til "jeg". Det erklærer "ri" som et objekt av typen "referanse til int". En referanse kan lett forveksles med en peker som er en uavhengig variabel, hvor adresseværdiene ikke kan tilordnes igjen når de er opprettet..

Forskjellen mellom pekeren og referansen

  1. Grunnleggende poeng og referanse

- Begge gir nesten like muligheter når det gjelder brukervennlighet og skillet kan være vanskelig. En peker er bare en variabel som lagrer minnesadressen til en annen variabel, mens en referanse er som et alias for en allerede eksisterende variabel. Det oppretter et andre navn for en variabel som kan brukes til å endre innholdet som er lagret i den variabelen.

  1. Forklaring av pekeren og referansen

- En peker er som hvilken som helst annen variabel som lagrer et stykke data. I motsetning til andre variabler lagrer pekervariabler minneadresser i stedet for verdier. En peker er dereferenced ved hjelp av indirection operatøren * for å få tilgang til minnestillplassen til variabelen den peker på. En referanse, derimot, trenger ikke noen dereferencing operatør for å få tilgang til verdien.

  1. Omplassering av pekeren og referansen

- Til forskjell fra pekere som kan initialiseres når som helst, må referanser tildeles ved initialisering. Pekere kan nås direkte, mens referanser ikke kan nås direkte.

  1. Minneadresse for pekeren og referansen

- En pekervariabel har sin egen plassering i minnet, noe som betyr at når du erklære en peker, spesifiserer du et sted som er en minneadresse tilordnet hver minneenhet. Pekervariabelen har samme adresse der den er lagret i minnet. En referansevariabel, derimot, er et alias for en annen variabel og derved tar adressen til referansevariabelen.

  1. NULL verdi for pekeren og referansen

- NULL representerer slutten av listen, som betyr at den indikerer at verdien ikke er kjent, og den angir at variabelen ikke har et gyldig adresserom. NULL verdi kan tilordnes en pekervariabel direkte som antyder at den ikke peker hvor som helst, mens NULL ikke kan tilordnes en referansevariabel.

Pointer vs Reference: Sammenligningstabel

Sammendrag av pekeren mot referanse

Pekere har alltid vært blant favorittemner som diskuteres av C / C ++-programmerere til referanser kom til bildet. Referanser ligner noe peker, men har en rimelig andel av fordeler og ulemper i sammenligning. Mens begge kan brukes til å endre lokale variabler av en funksjon i en annen funksjon, har de forskjeller. Begge er kraftige funksjoner i C og C + + som tillater deg å manipulere minne direkte, men med noen få unntak. En peker holder minnesadressen til en variabel, mens en referanse bare er et alias for en annen variabel.