Forskellen mellem pointer og matrix

Forskellen mellem pointer og matrix
Forskellen mellem pointer og matrix

Video: Forskellen mellem pointer og matrix

Video: Forskellen mellem pointer og matrix
Video: Как заездить лошадь Правильная заездка лошади Московский ипподром тренер Полушкина Ольга коневодство 2024, November
Anonim

Pointer vs Array

En pointer er en datatype, der indeholder en reference til en hukommelsesplacering (dvs. en pointervariabel gemmer en adresse på en hukommelsesplacering, hvor nogle data er lagret). Arrays er den mest almindeligt anvendte datastruktur til at gemme en samling af elementer. De fleste programmeringssprog giver metoder til nemt at deklarere arrays og få adgang til elementer i arrays.

Hvad er en pointer?

En markør er en datatype, der gemmer en adresse på en hukommelsesplacering, hvor nogle data er gemt. Med andre ord holder en pointer en reference til en hukommelsesplacering. Adgang til de data, der er gemt i den hukommelsesplacering, der refereres til af markøren, kaldes dereferencing. Når du udfører gentagne operationer, såsom at krydse træer/strenge, tabelopslag osv., vil brugen af pointere forbedre ydeevnen. Dette skyldes, at dereferencing og kopiering af pegepinde er billigere end faktisk at kopiere og få adgang til de data, pegepindene peger på. En nul pointer er en pointer, der ikke peger på noget. I Java ville adgang til en null-pointer generere en undtagelse kaldet en NullPointerException.

Hvad er et array?

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

int-værdier[5];

values[0]=100;

values[1]=101;

values[2]=102;

values[3]=103;

values[4]=104;

Figur 1: Kode til at deklarere 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 lagre 5 heltal, og de tilgås ved hjælp af indeks 0 til 4. En vigtig egenskab ved en matrix er, at hele matrixen er allokeret som en enkelt hukommelsesblok, og hvert element får sin eget rum 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å kompileringstidspunktet, skal du definere et stort nok array til at være på den sikre side. Men de fleste gange kommer vi faktisk til at 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" faktisk ikke er stort nok, ville programmet gå ned.

Hvad er forskellen mellem pointere og arrays?

En pointer er en datatype, der gemmer en adresse på en hukommelsesplacering, hvor nogle data er gemt, mens Arrays er den mest almindeligt anvendte datastruktur til at gemme en samling af elementer. I programmeringssprog C udføres array-indeksering ved hjælp af pointer-aritmetik (dvs. det ith-element i arrayet x ville svare til (x+i)). Derfor i C kan sæt af pointere, der peger på et sæt hukommelsesplaceringer, der er fortløbende, opfattes som et array. Yderligere er der forskel på, hvordan operatørens størrelse fungerer på pointere og arrays. Når den anvendes på et array, vil sizeof-operatoren returnere hele størrelsen af arrayet, hvorimod når den anvendes på en markør, vil den kun returnere størrelsen af markøren.

Anbefalede: