Programmeren in C/Datatypes: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Nijdam (overleg | bijdragen)
Nijdam (overleg | bijdragen)
Regel 305:
 
== ''Pointers'' ==
Een ''pointer'' ("wijzer") in ''C'' is, simpel gezegd, een variabele die een geheugen-adres kan bevatten. Een ''pointer'' wijst dus naar een geheugen gebiedgeheugengebied waar een bepaalde waarde hoort te staan. Of deze waarde er inderdaad staat, is overigens volledig de verantwoordelijkheid van de programmeur. Pointers zijn, net als integers, ''floating-point'' types ''scalars''. Dat wil zeggen dat de normale arithmatische bewerkingen (zoals optellen en aftrekken) gebruikt kunnen worden, zij het dat deze bewerkingen een wat bijzondere opvatting over het resultaat van een optelling hebben.
 
Pointers zijn geen zelfstandige types. Ze komen altijd voor in combinatie met een ander type zoals ''int'', ''float'' of zelfs een ''struct'', ''array'' of zelfs een functie. Een pointer wordt gedeclareerd door het type waarnaar de pointer moet wijzen, met de naam van de pointer voorafgegaan door *. Zo declareert
 
:int *ipnt;
:struct *strpnt;
 
de pointers 'ipnt' die naar een integer wijst en 'strpnt' die naar een structure wijst. Deze vorm van declareren lijkt enigszins verwarrend, aangezien het lijkt alsof een integer gedeclareerd wordt. Wel is het zo dat *ipnt inderdaad de integer is waarnaar ipnt wijst. De declaratie mag ook als volgt:
 
:int * ipnt;
:struct * strpnt;
 
Ook is het toegestaan de declaratie als volgt te schrijven:
 
:int* ipnt;
:struct* strpnt;
 
waardoor het meer lijkt op de declaratie van de varabele 'ipnt' van het type int*, een pointer naar een integer.
 
Een bijzonder type ''pointer'' is de ''void pointer'', een "wijzer naar niets". Dit houdt niet in dat het geheugengebied waarnaar dit type wijst leeg is, maar het type ervan is niet gespecificeerd. In de praktijk betekent dit dat elke willekeurige ''pointer'' aan een ''void pointer'' kan worden toegekend, maar dat een ''void pointer'' nooit zonder expliciete ''type-cast'' aan een ander type pointer kan worden toegekend. Het gebruik van ''void pointers'' kan daarom bijzonder handig zijn, maar (vanwege de expliciete cast) is het mogelijk hiermee zelfs het zeer tolerante type-checking systeem van ''C'' volledig buiten werking gesteld kan worden.
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.