Forskjellen mellom pointer og array

Pointer vs Array

En peker er en datatype som inneholder en referanse til en minnestilling (det vil si en pointervariabel lagrer en adresse på en minnested hvor noen data er lagret). Arrays er den mest brukte datastrukturen for å lagre en samling av elementer. De fleste programmeringsspråk gir metoder for enkelt å deklarere arrayer og tilgangselementer i arrays.

Hva er en peker?

En peker er en datatype som lagrer en adresse på en minnested hvor noen data er lagret. Med andre ord, en peker holder en referanse til en minneplass. Å få tilgang til dataene som er lagret i minnestedet som refereres av pekeren, kalles dereferencing. Ved utførelse av repeterende operasjoner som å krysse trær / strenger, tabelloppslag, etc., ved hjelp av pekere, vil ytelsen bli bedre. Dette skyldes at dereferencing og kopieringspekere er billigere enn å faktisk kopiere og få tilgang til dataene som pekes av pekerne. En nullpeker er en peker som ikke peker på noe. I Java vil det få et unntak kalt NullPointerException ved å få tilgang til en nullpeker.

Hva er en Array?

Vist i figur 1, er et stykke kode som vanligvis brukes til å deklarere og tilordne verdier til en matrise. Figur 2 viser hvordan en matrise vil se ut i minnet.

int verdier [5];

verdier [0] = 100;

Verdiene [1] = 101;

Verdiene [2] = 102;

Verdiene [3] = 103;

Verdiene [4] = 104;

Figur 1: Kode for å deklarere og tildele verdier til en matrise


100 101 102 103 104
Indeks: 0 1 2 3 4

Figur 2: Array lagret i minnet

Over koden definerer en matrise som kan lagre 5 heltall, og de nås ved hjelp av indeksene 0 til 4. En viktig egenskap i en matrise er at hele matrisen er allokert som en enkelt blokk med minne og hvert element får sin egen plass i matrisen . Når et array er definert, er størrelsen fast. Så hvis du ikke er sikker på størrelsen på arrayet på kompileringstid, må du definere et stort nok array for å være i den sikre siden. Men de fleste ganger vil vi faktisk bruke mindre antall elementer enn vi har tildelt. Så en betydelig mengde minne er faktisk bortkastet. På den annen side dersom programmet "stort nok" ikke er stort nok, vil programmet krasje.

Hva er forskjellen mellom Pointers og Arrays?

En peker er en datatype som lagrer en adresse på en minnested hvor noen data er lagret, mens Arrays er den mest brukte datastrukturen for å lagre en samling av elementer. I C programmeringsspråk gjøres arrayindeksering ved hjelp av pekerarithetikk (dvs. ith elementet i arrayet x vil være ekvivalent med * (x + i)). Derfor, i C, kan sett av pekere som peker på et sett med minneplasser som er påfølgende, betraktes som en matrise. Videre er det en forskjell i hvordan størrelsen på operatøren opererer på pekere og arrays. Når den brukes til en matrise, returnerer størrelsen på operatøren hele størrelsen på matrisen, mens når den brukes på en peker, vil den bare returnere størrelsen på pekeren.