Verschil tussen aanwijzer en matrix

Aanwijzer versus matrix

Een wijzer is een gegevenstype dat een verwijzing naar een geheugenlocatie bevat (d.w.z. een pointervariabele slaat een adres op van een geheugenlocatie waarin enkele gegevens zijn opgeslagen). Arrays zijn de meest gebruikte gegevensstructuur om een ​​verzameling elementen op te slaan. De meeste programmeertalen bieden methoden voor het eenvoudig declareren van arrays en toegangselementen 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 tot de gegevens die zijn opgeslagen op de geheugenlocatie waarnaar wordt verwezen door de aanwijzer, wordt dereferencing genoemd. Bij het uitvoeren van herhalende bewerkingen zoals het doorlopen van bomen / strings, opzoeken van tabellen, enz., Zou het gebruik van aanwijzers de prestaties verbeteren. Dit komt doordat dereferentie- en kopieerpunten goedkoper zijn dan het kopiëren en gebruiken van de gegevens die door de aanwijzers worden aangegeven. Een lege aanwijzer is een aanwijzer die nergens naar verwijst. In Java zou het openen van een null-pointer een uitzondering genereren, een NullPointerException genoemd.

Wat is een array?

Getoond in figuur 1 is een stukje code dat typisch wordt gebruikt om waarden aan een array te declareren en toe te wijzen. Figuur 2 geeft weer hoe een array eruit zou zien in het geheugen.

int-waarden [5];

waarden [0] = 100;

waarden [1] = 101;

waarden [2] = 102;

waarden [3] = 103;

waarden [4] = 104;

Figuur 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: Matrix opgeslagen in het geheugen

Bovenstaande code definieert een array die 5 gehele getallen kan opslaan en deze wordt benaderd met behulp van indices 0 tot 4. Een belangrijke eigenschap van een array is dat de gehele array wordt toegewezen als een enkel geheugenblok en dat elk element zijn eigen spatie in de array krijgt . Zodra een array is gedefinieerd, is de grootte ervan vastgesteld. Dus als je niet zeker bent over de grootte van de array tijdens het compileren, zou je een array moeten definiëren die groot genoeg is om veilig te zijn. Maar meestal gaan we minder elementen gebruiken dan we hebben toegewezen. Dus een aanzienlijke hoeveelheid geheugen is eigenlijk verspild. Aan de andere kant crasht het programma als de "groot genoeg array" niet groot genoeg is.

Wat is het verschil tussen Pointers en Arrays?

Een pointer is een gegevenstype dat een adres opslaat van een geheugenlocatie waarin bepaalde gegevens worden opgeslagen, terwijl arrays de meest gebruikte gegevensstructuur zijn om een ​​verzameling elementen op te slaan. In de C-programmeertaal wordt array-indexering gedaan met behulp van wijzeraritmetiek (dat wil zeggen dat het ih-element van de array x gelijk zou zijn aan * (x + i)). Daarom kan in C een reeks wijzers die verwijzen naar een reeks geheugenlocaties die opeenvolgend zijn, worden beschouwd als een array. Verder is er een verschil in hoe de operator sizeof werkt op pointers en arrays. Wanneer een operator wordt toegepast op een array, wordt de volledige grootte van de array geretourneerd, terwijl bij gebruik op een aanwijzer alleen de wijzer wordt geretourneerd.