Verschil tussen pointer en array

Anonim

Pointer vs Array

Een wijzer is een gegevenstype dat een verwijzing naar een geheugenlocatie bevat (dwz een wijzervariabele slaat een adres op van een geheugenplaats 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 en toegangselementen in de arrays gemakkelijk te verklaren. <

Wat is een wijzer?

Een wijzer is een gegevenstype dat een adres opslaat van een geheugenplaats waarin bepaalde gegevens zijn opgeslagen. Met andere woorden, een aanwijzer heeft een verwijzing naar een geheugenplaats. Toegang tot de opgeslagen gegevens in de geheugenplaats die door de aanwijzer wordt aangeduid, wordt herferencing genoemd. Wanneer perfo het herhalen van repetitieve bewerkingen zoals het doorkruisen van bomen / snaren, tabelopzoeken, enz., met behulp van aanwijzingen, zou de prestatie verbeteren. Dit komt omdat de afleider- en kopieerwijzers goedkoper zijn dan eigenlijk kopiëren en toegang krijgen tot de gegevens die door de aanwijzingen worden aangeduid. Een nulaanwijzer is een aanwijzer die niets aanwijst. In Java, zou het verkrijgen van een nullwijzer een uitzondering genaamd een NullPointerException genereer.

Wat is een Array?

Wordt in figuur 1 getoond, is een stuk code dat typisch gebruikt wordt om waarden te classificeren en toe te wijzen aan een array. Figuur 2 laat zien hoe een array in het geheugen zou lijken.

int waarden [5];

waarden [0] = 100;

waarden [1] = 101;

waarden [2] = 102;

waarden [3] = 103;

waarden [4] = 104;

Figuur 1: Code om waarden te verklaren en toe te wijzen 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 integers kan opslaan en ze worden toegankelijk met behulp van indices 0 tot 4. Een belangrijke eigenschap van een array is dat, de gehele array wordt toegewezen als een enkel blok van geheugen en elk element krijgt zijn eigen ruimte in de array. Zodra een array is gedefinieerd, is de grootte ervan vastgezet. Dus als u niet zeker bent van de grootte van de array op compileertijd, dan moet u een groot genoeg array definiëren om in de veilige kant te zijn. Maar meestal gaan we eigenlijk minder elementen gebruiken dan wij toegewezen hebben. Dus een aanzienlijke hoeveelheid geheugen is eigenlijk verspild. Aan de andere kant, als de 'grote genoeg array' niet echt groot genoeg is, zou het programma crashen.

Wat is het verschil tussen Pointers en Arrays?

Een wijzer 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 C programmeertaal wordt array indexering gedaan met behulp van wijzerrekenen (bijvoorbeeld het ith element van de array x zou gelijk zijn aan * (x + i)).Daarom kan in C een reeks geheugenpunten die opeenvolgend wijzen op een reeks geheugenlocaties, als een matrix worden beschouwd. Verder is er een verschil in hoe de grootte van de operator op pointers en arrays werkt. Wanneer u op een array toepast, zal de grootte van de operator de volledige grootte van de array terugzenden, terwijl wanneer het wordt toegepast op een aanwijzer, het alleen de grootte van de aanwijzer weer zou geven.