Forskel mellem peger og reference | Pointer vs Reference

Anonim

Nøgleforskel - Pointer vs Reference

Før vi diskuterer forskellen mellem pointer og reference, lad os først se på disse to termers betydning kort. I et program optager data hukommelse. Den nøjagtige placering af hukommelse, hvori dataene blev placeret i en udførelsestid, skal være kendt for at få adgang til dem. Pegevariabler og referencevariabler bruges til at få adgang til disse data og manipulere de hukommelsesadresser, de er til. Det vil sige, at begge pointers og referencer kan bruges til at henvise til objekter indirekte. De har i hovedsagen hukommelsesadresser som deres værdier. nøgleforskellen mellem en pointer og en reference er, at en pointer er en variabel, der lagrer adressen til hukommelsesstedet for en anden variabel , mens en reference er en variabel, der refererer til en anden variabel. De to mekanismer, den pointer og referencen, har forskellig syntaks og brug .

Hvad er en pointer?

En pointer er en programmeringssprogobjekt, der lagrer hukommelsesadressen til en værdi i computerminnet.

I C ++-syntaks;

int i = 5;

int * ptr = & i;

Den første linje definerer en variabel initialiseret med en værdi på 5. Den anden linje definerer en peger til variablens hukommelsesadresse. Her er "ptr" erklæret som et objekt af typen 'pointer to int', hvis oprindelige værdi er adressen til objektet i. Væsentligt ptr-variabel peger på jeg ved at gemme sin hukommelsesadresse.

Hent den værdi, der er gemt på en hukommelsesplacering kaldes dereferencing . * Operatøren bruges til at markere markøren. Efter deklarationerne er udført, henviser det indirekte udtryk * ptr dereferences ptr til i.

For at ændre værdien af ​​jeg kan følgende tildeling anvendes;

* ptr = 20;

Pointere kan omfordeles for at henvise til forskellige objekter.

A null pointer er en særlig type peger. En nullpeger betegnes ofte med 0 eller null og peger på ingenting. Det er god praksis at bruge en nullpeger, hvis du ikke har en nøjagtig adresse, der skal tildeles markøren. Denne opgave kan bruges i logiske operationer og forhold.

Pointers kan være bruges til at gemme og administrere adresserne på dynamisk allokeret hukommelse . Implementering og styring af datastrukturer som stabler, køer og lister kan gøres effektive ved brug af pegepinde. For eksempel kan en kø have to pointers; hovedpeger og halepeger.Pointers kan også bruges til at videregive variabler efter deres adresse, hvilket ville gøre det muligt at ændre værdien. Direkte manipulering af hukommelse eller hukommelseskortede enheder kan også håndteres ved hjælp af peger.

Pointere tillader både beskyttet og ubeskyttet adgang til hukommelse adresseret. Derfor skal der træffes nødvendige forholdsregler for at kontrollere, at indholdet af en peger er gyldigt. Ellers kan det skyldes, at programmet slår ned ved at fjerne en markør med en ugyldig hukommelsesadresse.

Pointere understøttes på sprog som C, C ++, Pascal og mange samlingssprog.

Pointer a peger på hukommelsesadressen er forbundet med variabel b.

Hvad er en reference?

En reference er simpelthen en alternativ id for en værdi, der er gemt i hukommelsen . Det gør det muligt for et program indirekte at få adgang til et bestemt dato.

I C ++-syntaks;

int i = 5;

int & ref = i;

Den første linje definerer en variabel initialiseret med en værdi på 5. Den anden linje erklærer 'ref' som et objekt af typen 'reference til int', som refererer til i. En reference er forskellig fra dataene selv, idet en reference er implementeret som den fysiske adresse for det bestemte datatid, der er lagret i hukommelsen.

Når en gang er defineret, kan en reference ikke omfordeles en ny værdi. En reference henviser altid til det objekt, som det initialiseres med. I den følgende opgave henviser ref stadig til i, men værdien er nu 20.

ref = 20;

I henhold til ovenstående eksempel kræves der ikke nogen operatører i dereferreringsreferencer.

Referencer kan bruges, når en variabel altid henviser til en genstand. Dette skyldes, at henvisningerne i modsætning til pointer ikke kan være null og skal altid tildeles ved initialisering. Da referencer altid skal henvise til noget objekt, gør en sådan variabel en reference, der sikrer, at programmet fungerer effektivt og korrekt. I betragtning af at der ikke er nullreferencer, behøver validiteten af ​​en referencevariabel ikke at blive testet.

Referencevariabler kan bruges til effektivt at overføre store data som argumenter til procedurer . Referencer bruges også til deling af store data mellem forskellige kodeområder, da hver kode holder en henvisning til dataene.

Programmeringssprog som C + +, Java, Python, Perl, PHP, Ruby osv. Support referencer.

Hvad er forskellen mellem peger og reference?

Definition af pointer og reference

Pointer: En pointer er hukommelsesadressen til et objekt, der er gemt i computerminnet.

Reference: En reference er en alternativ identifikator eller et alias for en genstand.

Kendetegn for peger og reference

Erklæring

Peger: En peger er angivet med * operatøren.

Reference: En reference erklæres med & operatoren.

Dereferencing

Peger: En pegervariabel kræver, at * operatøren bliver aflæst.

Reference: En referencevariabel kræver, at ingen operatør udnyttes.

Initialisering

Pointer: Pointere kan initialiseres til null.Sådanne variabler kaldes nullpegere.

Reference: Henvisninger kan ikke initialiseres til null. Der er ikke noget som en null reference. En reference skal altid referere til et objekt.

Omfordeling

Pointer: En pegervariabel kan omfordeles for at henvise til forskellige objekter.

Reference: En referencevariabel kan ikke omfordeles. Det refererer altid til det objekt, som det blev initialiseret med.

Anvendelse

Pointer: Pointervariabler skal bruges, når muligheden for at henvise til intet eksisterer, eller når det er nødvendigt at henvise til forskellige ting på forskellige tidspunkter.

Reference: Referencevariabler skal anvendes, når der altid vil være en genstand at henvise til, og når det ikke er nødvendigt at bruge denne referencevariabel til at referere til noget andet end det pågældende objekt.

Anvendelse af brug

Pointer: Pointervariabler kan bruges til implementering af algoritmer og datastrukturer.

Reference: Referencevariabler kan anvendes i funktionsparametre, og returtyper definerer nyttige grænseflader.

Brugte sprog:

Pointer: Programmeringssprog som C, C ++, Pascal og mange forsamlingssprog til forsamlingssprog.

Reference: Programmeringssprog som C + +, Java, Python, Perl, PHP, Ruby osv. Support referencer.

Image Courtesy: "Pointers" af Denne fil er lavet af Bruger: SvenTranslation. Eget arbejde Dette vektorbillede blev oprettet med Inkscape. (CC BY-SA 3. 0) via Commons -