Forskjellen mellom peker og matrise

Forskjellen mellom peker og matrise
Forskjellen mellom peker og matrise

Video: Forskjellen mellom peker og matrise

Video: Forskjellen mellom peker og matrise
Video: ИБП APC Smart UPS 2200 PowerChute Business Edition Обзор Установка Настройка Мониторинг через SNMP 2024, November
Anonim

Pointer vs Array

En peker er en datatype som inneholder en referanse til en minneplassering (dvs. en pekervariabel lagrer en adresse til en minneplassering der noen data er lagret). Matriser er den mest brukte datastrukturen for å lagre en samling av elementer. De fleste programmeringsspråk tilbyr metoder for enkelt å deklarere matriser og få tilgang til elementer i matrisene.

Hva er en peker?

En peker er en datatype som lagrer en adresse til en minneplassering der noen data er lagret. Med andre ord, en peker holder en referanse til en minneplassering. Å få tilgang til dataene som er lagret i minneplasseringen som refereres til av pekeren kalles dereferencing. Når du utfører repeterende operasjoner som å krysse trær/strenger, tabelloppslag osv., vil bruk av pekere forbedre ytelsen. Dette er fordi det å referere og kopiere pekere er billigere enn å faktisk kopiere og få tilgang til dataene som pekerne viser. En null-peker er en peker som ikke peker til noe. I Java vil tilgang til en null-peker generere et unntak k alt et NullPointerException.

Hva er en Array?

Vist i figur 1, er et kodestykke 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];

values[0]=100;

values[1]=101;

values[2]=102;

values[3]=103;

values[4]=104;

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

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

Figur 2: Array lagret i minnet

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

Hva er forskjellen mellom Pointers og Arrays?

En peker er en datatype som lagrer en adresse til en minneplassering der noen data er lagret, mens Arrays er den mest brukte datastrukturen for å lagre en samling av elementer. I programmeringsspråket C gjøres array-indeksering ved å bruke peker-aritmetikk (dvs. det i-te elementet i arrayen x vil være ekvivalent med (x+i)). Derfor i C kan sett med pekere som peker til et sett med minneplasseringer 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 matriser. Når den brukes på en matrise, vil sizeof-operatoren returnere hele størrelsen på matrisen, mens når den brukes på en peker, vil den returnere bare størrelsen på pekeren.

Anbefalt: