Pointer vs Array
En markør er en datatype, der har en henvisning til en hukommelsesplacering (dvs. en markørvariabel gemmer en adresse på en hukommelsesplacering, hvor nogle data er gemt). Arrays er den mest almindeligt anvendte datastruktur til lagring af en samling af elementer. De fleste programmeringssprog indeholder metoder til let at deklarere arrays og adgangselementer i arrays.
Hvad er en pointer?
En markør er en datatype, der gemmer en adresse på et hukommelsessted, hvor nogle data er gemt. Med andre ord har en markør en henvisning til et hukommelsessted. Adgang til de data, der er gemt i hukommelsesstedet, der henvises til af markøren, kaldes dereferencing. Når du udfører gentagne handlinger, såsom at krydse træer / strenge, tabelopslag osv., Ville brug af pegepinde forbedre ydelsen. Dette skyldes, at dereferencing og kopiering af pointers er billigere end faktisk at kopiere og få adgang til de data, som pointers har peget på. En nulpinder er en markør, der ikke peger på noget. I Java ville adgang til en nullpointer generere en undtagelse kaldet NullPointerException.
Hvad er en matrix?
I figur 1 vises et stykke kode, der typisk bruges til at erklære og tildele værdier til en matrix. Figur 2 viser, hvordan en matrix ville 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 angivelse og tildeling af værdier til en matrix
100 | 101 | 102 | 103 | 104 |
Indeks: 0 | 1 | 2 | 3 | 4 |
Figur 2: Array gemt i hukommelsen
Ovenfor kode definerer en matrix, der kan gemme 5 heltal, og der fås adgang til dem ved hjælp af indekser 0 til 4. En vigtig egenskab ved en matrix er, at hele matrixen er tildelt som en enkelt blok 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 på matrixen på kompileringstidspunktet, bliver du nødt til at definere en stor nok matrix til at være i den sikre side. Men de fleste af de gange bruger vi faktisk mindre antal elementer, end vi har tildelt. Så en betydelig mængde hukommelse spildes faktisk. På den anden side, hvis det "store nok array" faktisk ikke er stort nok, ville programmet gå ned.
Hvad er forskellen mellem Pointers og Arrays?
En markør 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 af elementer. I C-programmeringssprog udføres arrayindeksering ved hjælp af markøraritmetik (dvs. ith-elementet i matrixen x ville være ækvivalent med * (x + i)). I C kan sæt af pekere, der peger på et sæt hukommelsesplaceringer, der er fortløbende, derfor betragtes som en matrix. Der er desuden en forskel i, hvordan operatørens størrelse fungerer på peger og arrays. Når den anvendes på en matrix, returnerer sizeof-operatøren hele størrelsen på arrayen, mens den, når den anvendes på en markør, returnerer netop størrelsen på markøren.