Programmeren in C++/Pointers: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Spellingsfout
Nijdam (overleg | bijdragen)
Geen bewerkingssamenvatting
Regel 1:
{{Programmeren in C++}}
{{TeDoen|wat=Onderverdelen in kopjes}}
Pointers behoren tot de krachtigste hulpmiddelen die er zijn in C++. Het werken met pointers is wel tamelijk lastig om te leren, wat gedeeltelijk veroorzaakt wordt door de enigszins verwarrende wijze waarop in C++ variabelen gedeclareerd worden. Zo is:
 
{{Code|
Regel 14:
niet de declaratie van een integer met de naam *intPnt, maar de declaratie van een pointer naar een integer met de naam intPnt. De werkelijke achtergrond van deze notatie is echter dat *intPnt wel degelijk een integer is, en juist de integer waar intPnt naar wijst. In dit artikel moet je wel weten wat een variabele is, wat voor types je hebt en hoe je ze aanmaakt.
 
Een pointer is een variabele waarwaarin je een geheugenadres in opslaat. Waarschijnlijk moet je de regel een paar keer lezen om hem te snappen, maar ik zal hem hier nog even uitgebreid verklaren. Een pointer is dus een variabele. Dat is een object waarin je gegevens kunt opslaan. In het geval van een pointer sla je dus in die variabele een geheugenadres op.
 
Wat is nou een geheugenadres? Het geheugen is verdeeld in hokken, laten we zeggen postvakjes. Ieder postvakje heeft een uniek adres oftewel een uniek geheugenadres. Ieder postvakje is 1 byte groot. Zo wordtwordrn bijvoorbeeld bij een unsigned long int 4 postvakjes gereserveerd. Een unsigned long int is 4 bytes, dus krijgt hij 4 vakjes toegewezen.
 
Nou hoef je natuurlijk als programmeur niet de adressen van je variabelen te weten. Daar heeft C++ een operator voor. Om achter het adres van een variabele te komen gebruik je de "address of"-operator oftewel &. Om dit te demonstreren is hier een voorbeeld.
 
 
{{Code|
Regel 50 ⟶ 49:
</source>
}}
In dit geval heeft de variabele 'ShortVarshortVar' het adres '0x8fc9:fff4'. Dat betekent niets anders dan dat de geheugenplaats '0x8fc9:fff4' (en ook de drie daarop volgende geheugenplaatsen), met de naam 'shortVar' aangesproken kan worden. Dat is voor ons makkelijkergemakkelijker dan steeds die hex-getallen te moeten gebruiken.
 
In een geheugenplaats kan ook informatie opgeslagen worden. In 'shortVar' zelf is het getal 5 opgeslagen. Maar we willen ook het adres van shortVar, dus het hex-getal '0x8fc9:fff4' ergens opslaan. Eigenlijk interesseert het ons niet welk hex-getal het is, dat hoeven we niet te weten, het gaat er alleen om dat het het adres van 'shortVar' is. We hebben dus een variabele nodig waarin je zo'n adres kunt opslaan. Zo'n variabele is een ''pointer''.
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.