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. Pekervariabler 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. De nøkkelforskjell mellom en peker og en referanse er det en peker er en variabel som lagrer adressen til minnestedet til en annen variabel mens a referanse er en variabel som refererer til en annen variabel. De to mekanismene, de pekeren og referanse, har forskjellig syntaks og bruk.
En peker er et programmeringsspråkobjekt som lagrer minnesadressen til en verdi i databehandlingsminnet.
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.
Å hente 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;
Pekere kan omfordeles for å referere til forskjellige objekter også.
EN 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.
Pekere kan være brukes til å lagre og administrere adressene til dynamisk allokert 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 minnet 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.
Pekere støttes på språk som C, C ++, Pascal og mange samlingssprog.
Pointer en peker til minnet adressen knyttet til variabel b.
En referanse er bare en alternativ identifikator for en verdi lagret i minnet. Det gjør det mulig for et program å indirekte få tilgang til et bestemt tidspunkt.
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 tilordnes en ny verdi. En referanse refererer alltid til objektet som den initialiseres med. I det følgende oppdraget 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 objekt. 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 være 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.
Programmering språk som C + +, Java, Python, Perl, PHP, Ruby, etc. støtte referanser.
Pointer: En peker er minnesadressen til et objekt som er lagret i databehandlingsminnet.
Henvisning: En referanse er en alternativ identifikator eller et alias for en gjenstand.
Pointer: En peker er erklært med * operatøren.
Henvisning: En referanse erklært med operatøren.
Pointer: En pekervariabel krever at * operatøren blir avferdret.
Henvisning: En referansevariabel krever at ingen operatør blir utferdiget.
Pointer: Pekere kan initialiseres til null. Slike variabler kalles nullpekere.
Henvisning: Referanser kan ikke initialiseres til null. Det er ikke noe som en nullreferanse. En referanse må alltid referere til et objekt.
Pointer: En pekervariabel kan tilordnes for å referere til forskjellige objekter.
Henvisning: En referansevariabel kan ikke tilordnes. Det refererer alltid til objektet som det ble initialisert til.
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.
Henvisning: 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.
Pointer: Pekervariabler kan brukes til å implementere algoritmer og datastrukturer.
Henvisning: Referansevariabler kan brukes i funksjonsparametere, og returtyper definerer nyttige grensesnitt.
Pointer: Programmeringsspråk som C, C ++, Pascal og mange forsamlingsspesifikasjoner.
Henvisning: Programmering språk som C + +, Java, Python, Perl, PHP, Ruby, etc. støtte referanser.
Image Courtesy: "Pointers" av Denne filen ble laget av Bruker: SvenTranslation.Own work.This vektorbilde ble laget med Inkscape.(CC BY-SA 3.0) via Commons -