Forskjell mellom pekeren og referansen | Pointer vs Reference

Anonim

Nøkkelforskjell - Pointer vs Reference

Før vi diskuterer forskjellen mellom pekeren og referansen, la oss først se på betydningen av disse to begrepene kort. I et program opptar data minne. Den nøyaktige plasseringen av minnet der dataene ble plassert i en kjøretid, burde være kjent for å få tilgang til dem. Pointervariabler og referansevariabler brukes til å få tilgang til disse dataene og manipulere minnesadressene de er på. Det vil si at begge pekere og referanser kan brukes til å referere til objekter indirekte. De har i hovedsak minneadresser som deres verdier. nøkkelforskjellen mellom en peker og en referanse er at en peker er en variabel som lagrer adressen til minnestedet til en annen variabel mens en referanse er en variabel som refererer til en annen variabel. De to mekanismene, pekeren og referansen, har forskjellig syntaks og bruk .

Hva er en peker?

En peker er et programmeringsspråkobjekt som lagrer minnetadressen til en verdi i databehandlingsminnet.

I C ++-syntaks;

int i = 5;

int * ptr = & i;

Den første linjen definerer en variabel initialisert med en verdi på 5. Den andre linjen definerer en peker til variabelenes minneadresse. Her er 'ptr' erklært som et objekt av typen 'pointer to int' hvis initial verdi er adressen til objektet i. Vesentlig ptr-variabel poeng til jeg ved å lagre sin minneadresse.

Å få verdien som er lagret på et minnested, kalles dereferencing . Operatøren * brukes for å dereferere pekeren. Etter at deklarasjonene er gjort, vil det indirekte uttrykket * ptr dereferences ptr referere til i.

For å endre verdien av jeg kan følgende tildeling brukes;

* ptr = 20;

Poengene kan omfordeles for å referere til forskjellige objekter også.

A null pointer er en spesiell type peker. En nullpeker er ofte betegnet med 0 eller null og peker på ingenting. Det er god praksis å bruke en nullpeker i tilfelle du ikke har en eksakt adresse som skal tilordnes pekeren. Denne oppgaven kan brukes i logiske operasjoner og forhold.

Poengter kan være brukt til å lagre og administrere adressene til dynamisk tildelt minne . Implementering og kontroll av datastrukturer som stabler, køer og lister kan gjøres effektive ved bruk av pekere. For eksempel kan en kø ha to pekere; hodepeker og halepeker.Pekere kan også brukes til å passere variabler etter deres adresse, noe som vil tillate at verdien endres. Direkte manipulere minne eller minne-mappede enheter kan også håndteres ved hjelp av pekere.

Pekere tillater både beskyttet og ubeskyttet tilgang til minne adressert. Derfor må det tas nødvendige forholdsregler for å verifisere at innholdet på en peker er gyldig. Ellers kan dereferring av en peker med en ugyldig minneadresse føre til at programmet krasjer.

Poengene støttes på språk som C, C ++, Pascal og mange samlingssprog.

Pointer a peker på minnet adressen knyttet til variabel b.

Hva er et referanse?

En referanse er ganske enkelt en alternativ identifikator for en verdi lagret i minnet . Det gjør det mulig for et program å indirekte få tilgang til et bestemt tidspunkt.

I C ++-syntaks;

int i = 5;

int & ref = jeg;

Den første linjen definerer en variabel initialisert med en verdi på 5. Den andre linjen erklærer 'ref' som et objekt av typen 'referanse til int' som refererer til i. En referanse er forskjellig fra dataene selv, gitt at en referanse er implementert som den fysiske adressen til det bestemte dataarket som er lagret i minnet.

Når en gang er definert, kan en referanse ikke omfordeles til en ny verdi. En referanse refererer alltid til objektet som den initialiseres med. I følgende oppgave refererer ref fortsatt til jeg, men verdien er nå 20.

ref = 20;

I følge eksemplet ovenfor krever dereferreringsreferanser ingen operatører.

Referanser kan brukes når en variabel alltid refererer til en gjenstand. Dette skyldes at, i motsetning til pekere, kan referanser ikke være null og må alltid tildeles ved initialisering. Siden referanser må alltid referere til noe objekt, gjør en slik variabel en referanse som sikrer at programmet vil fungere effektivt og korrekt. Gitt det, er det ingen nullreferanser, må validiteten til en referansevariabel ikke bli testet.

Referansevariabler kan brukes til effektivt å sende store data som argumenter til prosedyrer . Referanser brukes også til å dele store data mellom forskjellige kodeområder siden hver kode holder en referanse til dataene.

Programmeringsspråk som C + +, Java, Python, Perl, PHP, Ruby, etc. støtte referanser.

Hva er forskjellen mellom pekeren og referansen?

Definisjon av pekeren og referansen

Pointer: En peker er minnesadressen til et objekt som er lagret i databehandlingsminnet.

Referanse: En referanse er en alternativ identifikator eller et alias for en gjenstand.

Pointer og referanseegenskaper

Deklarasjon

Pointer: En pointer er erklært med * -operatoren.

Referanse: En referanse erklæres med & operatøren.

Dereferencing

Pointer: En pointervariabel krever at * operatøren blir avledet.

Referanse: En referansevariabel krever at ingen operatør blir overført.

Initialisering

Pointer: Poengene kan initialiseres til null.Slike variabler kalles nullpekere.

Referanse: Referanser kan ikke initialiseres til null. Det er ikke noe som en nullreferanse. En referanse må alltid referere til et objekt.

Omfordeling

Pointer: En pekervariabel kan omfordeles for å referere til forskjellige objekter.

Referanse: En referansevariabel kan ikke tilordnes. Det refererer alltid til objektet som det ble initialisert til.

Bruk

Pointer: Pointervariabler skal brukes når muligheten for å henvise til ingenting eksisterer eller når det er nødvendig å referere til forskjellige ting på forskjellige tidspunkter.

Referanse: Referansevariabler skal brukes når det alltid vil være et objekt å referere til og når det ikke er nødvendig å bruke referansevariabelen for å referere til noe annet enn det objektet.

Anvendelse av bruk

Pointer: Pointervariabler kan brukes til å implementere algoritmer og datastrukturer.

Referanse: Referansevariabler kan brukes i funksjonsparametere, og returtyper definerer nyttige grensesnitt.

Brukte språk:

Pointer: Programmeringsspråk som C, C ++, Pascal og mange forsamlingsspesifikasjoner.

Referanse: Programmeringsspråk som C + +, Java, Python, Perl, PHP, Ruby, etc. støttehenvisninger.

Image Courtesy: "Pointers" av Denne filen ble laget av Bruker: SvenTranslation. Eget arbeid Dette vektorbildet ble opprettet med Inkscape. (CC BY-SA 3. 0) via Commons -