Welcome to Serpia's blog!
Blog Entry
C++ deel-4
Arrays
Een array is een opeenvolgende reeks van elementen van hetzelfde type opgeslagen in het geheugen, waarvan ieder element kan worden benaderd. Bijvoorbeeld kunnen we 5 elementen van het type int opslaan, ieder met een eigen waarde en eigen adres.
| 0 | 1 | 2 | 3 | 4 | |
| frankie | 16 | 32 | 96 | 760 | 1036 |
Maar er is meer! Er zijn ook multi dimensionale arrays:
| 0 | 1 | 2 | 3 | 4 | ||
| frankie | 0 | 16 | 32 | 96 | 760 | 1036 |
| 1 | 2 | 1 | 4 | 6 | 7 | |
| 2 | 100 | 11 | 124 | 1 | 12 |
Pointers
Het onderwerp pointers wordt vaak lastig gevonden en niet zonder reden. Neem de tijd om dit goed te bestuderen omdat het een fundamenteel onderwerp is. Kijk ook eens naar de onderstaande video:
Op regel 06 definieren we de parameter 'a' en kennen de waarde '25' toe. Regel 07 voert deze waarde uit naar het scherm. Op regel 08 gebruiken we de 'referentie operator &' om het geheugenadres van de variabele 'a' weer te geven. In mijn geval de waarde '0x7fff14c5ed434'.
In regel 10 declareren we een pointer, let op: het type moet hetzelfde zijn als de variabele als waar naar verwezen wordt. Regel 11 kent de adreswaarde van 'a' toe aan de net gemaakte pointer. En inderdaad, op regel 12 zie je dat dit inderdaad het geval is.
Op regel 14 gebruiken we de 'dereference operator *' om via de pointer 'mp' de waarde van het geheugenadres van 'a' te wijzigen in '255'. Het kan verwarrend zijn dat voor het declareren van een pointer (regel 10), ook een '*' wordt gebruikt! Inderdaad, als we regel 15 uitvoeren is het geheugenadres nog steeds hetzelfde. Maar op regel 16 zien we dat inderdaad de waarde van 'a' is veranderd, via de pointer mp! Laat dit goed op je inwerken, er is veel informatie te vinden op het net over pointers.
Pointers en Arrays
... zijn als beste maatjes van elkaar. Sterker nog, de referentie naar een array is het adres van het eerste element en ook de pointer zal dit adres gebruiken. Dus dit is geldig;
Hieronder nog een mooi voorbeeld uit de tutorial van cplusplus.com om dit gedeelte af te ronden;
Rekenen met pointers
Rekenen met pointers is anders dan het rekenen met 'normale' int's. Ten eerste kun je met pointers alleen optellen en aftrekken en ten tweede is de uitkomst afhankelijk van het gedefinieerde type.
Ook kunnen pointers naar elkaar wijzen, naar functies en klassen wijzen. Meer hierover later in de onderdeel over 'klassen'.
xkcd over pointers
Comments
Post a comment
