Forskel mellem pointer og array

Anonim

Pointer vs Array

En peger er en datatype, der indeholder en reference til en hukommelsesplacering (dvs. en pointervariabel gemmer en adresse på en hukommelsesplacering, hvor nogle data er gemt.) Arrays er den mest anvendte datastruktur til at gemme en samling af elementer. De fleste programmeringssprog giver metoder til nemt at erklære arrayer og adgangselementer i arrays. <

Hvad er en pointer?

En peger er en datatype, der gemmer en adresse på en hukommelsesplacering, hvor nogle data er gemt. Med andre ord har en peger en henvisning til en hukommelsesplacering. Åbning af de data, der er gemt i den hukommelsesplacering, der henvises af pegeren, kaldes dereferencing. Når perfo rming gentagne operationer som at krydse træer / strenge, bordopsøgninger mv. ved hjælp af peger ville forbedre ydeevnen. Dette skyldes, at dereferencing og kopiering pointers er billigere end faktisk kopiering og adgang til de data, der peges af pegerne. En nullpeger er en pointer, der ikke peger på noget. I Java ville adgang til en nullpeger generere en undtagelse kaldet en NullPointerException.

Hvad er et Array?

Vises i figur 1, er et stykke kode typisk brugt til at erklære og tildele værdier til en matrix. Figur 2 viser hvordan et array vil se ud i hukommelsen.

int værdier [5];

værdier [0] = 100;

værdier [1] = 101;

værdier [2] = 102;

værdier [3] = 103;

værdier [4] = 104;

Figur 1: Kode til at erklære og tildele værdier til en matrix

100

101 102 103 104 Indeks: 0
1 2 < 3 4 Figur 2: Array gemt i hukommelsen Ovenstående kode definerer en matrix, der kan gemme 5 heltal, og de bliver tilgængelige ved hjælp af indekserne 0 til 4. En vigtig egenskab af en matrix er det, hele arrayet er allokeret som en enkelt blok af hukommelse, og hvert element får sin egen plads i arrayet. Når en matrix er defineret, er dens størrelse fast. Så hvis du ikke er sikker på størrelsen af ​​arrayet på kompileringstid, skal du definere et stort nok array til at være på den sikre side. Men de fleste gange vil vi faktisk bruge mindre antal elementer, end vi har tildelt. Så en betydelig mængde hukommelse er faktisk spildt. På den anden side, hvis det "store nok array" ikke rent faktisk er stort nok, vil programmet kollidere.

Hvad er forskellen mellem Pointers og Arrays?

En peger er en datatype, der gemmer en adresse på en hukommelsesplacering, hvor nogle data er gemt, mens Arrays er den mest anvendte datastruktur til at gemme en samling elementer. I C programmeringssprog foretages arrayindeksering ved hjælp af pegeralitmetik (f.eks. Ith elementet i arrayet x svarer til * (x + i)).Derfor kan i C, sæt af pegere, der peger på et sæt hukommelsessteder, der er på hinanden følgende, betragtes som en matrix. Derudover er der en forskel i, hvordan operatorens størrelse fungerer på peger og arrayer. Når den anvendes til en matrix, vil størrelsen af ​​operatøren returnere hele størrelsen af ​​arrayet, mens den, når den påføres en peger, vil returnere blot markørens størrelse.