Aanwijzer versus matrix
Een pointer is een gegevenstype dat een verwijzing naar een geheugenlocatie bevat (dwz een pointervariabele slaat een adres op van een geheugenlocatie waarin sommige gegevens zijn opgeslagen). Arrays zijn de meest gebruikte gegevensstructuur om een verzameling elementen op te slaan. De meeste programmeertalen bieden methoden om arrays eenvoudig te declareren en toegang te krijgen tot elementen in de arrays.
Wat is een aanwijzer?
Een pointer is een gegevenstype dat een adres opslaat van een geheugenlocatie waarin bepaalde gegevens zijn opgeslagen. Met andere woorden, een pointer bevat een verwijzing naar een geheugenlocatie. Toegang krijgen tot de gegevens die zijn opgeslagen op de geheugenlocatie waarnaar wordt verwezen door de aanwijzer, wordt dereferentie genoemd. Bij het uitvoeren van repetitieve bewerkingen zoals het doorkruisen van bomen / strings, opzoeken van tabellen, enz., Zou het gebruik van pointers de prestatie verbeteren. Dit komt doordat het verwijderen van verwijzingen en het kopiëren van pointers goedkoper is dan het daadwerkelijk kopiëren en openen van de gegevens die door de pointers worden aangegeven. Een null-aanwijzer is een aanwijzer die nergens naar verwijst. In Java zou het openen van een null-pointer een uitzondering genereren die een NullPointerException wordt genoemd.
Wat is een array?
Getoond in figuur 1, is een stukje code dat doorgaans wordt gebruikt om waarden aan een array te declareren en toe te wijzen. Figuur 2 laat zien hoe een array eruit zou zien in het geheugen.
waarden [0] = 100; waarden [1] = 101; waarden [2] = 102; waarden [3] = 103; waarden [4] = 104; |
Afbeelding 1: code voor het declareren en toewijzen van waarden aan een array
100 | 101 | 102 | 103 | 104 |
Index: 0 | 1 | 2 | 3 | 4 |
Figuur 2: Array opgeslagen in het geheugen
Bovenstaande code definieert een array die 5 gehele getallen kan opslaan en deze worden benaderd met behulp van indices 0 tot 4. Een belangrijke eigenschap van een array is dat de hele array wordt toegewezen als een enkel geheugenblok en dat elk element zijn eigen ruimte in de array krijgt.. Zodra een array is gedefinieerd, staat de grootte ervan vast. Dus als u niet zeker weet hoe groot de array tijdens het compileren is, moet u een array definiëren die groot genoeg is om veilig te zijn. Maar meestal gaan we minder elementen gebruiken dan we hebben toegewezen. Er wordt dus een aanzienlijke hoeveelheid geheugen verspild. Aan de andere kant, als de "groot genoeg array" niet echt groot genoeg is, crasht het programma.
Wat is het verschil tussen Pointers en Arrays?
Een pointer is een gegevenstype dat een adres opslaat van een geheugenlocatie waarin sommige gegevens zijn opgeslagen, terwijl arrays de meest gebruikte gegevensstructuur zijn om een verzameling elementen op te slaan. In programmeertaal C wordt array-indexering gedaan met behulp van pointer-rekenkunde (dwz het i-element van de array x zou equivalent zijn aan * (x + i)). Daarom kan in C een reeks verwijzingen die naar een reeks opeenvolgende geheugenlocaties verwijzen, worden gezien als een array. Verder is er een verschil in hoe de grootte van de operator werkt op pointers en arrays. Indien toegepast op een array, retourneert sizeof-operator de volledige grootte van de array, terwijl wanneer toegepast op een pointer, het alleen de grootte van de pointer retourneert.