Programmeren in C/Datatypes: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
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
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.
|