Wijzers
Soms willen wij weten waar een variabele in geheugen verblijft. Een wijzer bevat het adres van een variabele die een specifieke waarde heeft. Wanneer het verklaren van een wijzer, wordt een asterisk geplaatst onmiddellijk vóór de wijzernaam.
Het adres van de geheugenplaats waar de variabele wordt opgeslagen kan worden gevonden door een ampersand voor de veranderlijke naam te plaatsen.
int num; /* Normale geheelvariabele */
int *numPtr; /* Wijzer aan een geheelvariabele */
Het volgende voorbeeld drukt de veranderlijke waarde en het adres in geheugen van die variabele.
printf("The value %d is stored at address %X\n",
num, &num);
Om het adres van veranderlijke num aan de wijzer numPtr toe te wijzen, wijst u het adres van de variabele, num, zoals in het daarna gegeven voorbeeld toe:
numPtr = #
Om te weten te komen wat op het adres opgeslagen wordt dat aan door numPtr wordt gericht, moet de variabele zijn dereferenced. Dereferencing wordt bereikt met de asterisk de wijzer waarmee werd verklaard.
printf("The value %d is stored at address %X\n",
*numPtr, numPtr);
Alle variabelen in een programma verblijven in geheugen. De hieronder gegeven verklaringen verzoeken om dat de compilerreserve 4 bytes van geheugen op een computer met 32 bits voor floating-point veranderlijk x, dan gezet waarde 6,5 daarin.
float x;
x = 6.5;
Aangezien de adresplaats in geheugen van veranderlijk door de exploitant wordt verkregen te plaatsen & vóór zijn naam daarom &x is staat het adres van x. C ons toe om één stadium verder te gaan en een variabele te bepalen, genoemd een wijzer die het adres van andere variabelen bevat. Eerder kunnen wij zeggen dat de wijzer aan andere variabele richt. Bijvoorbeeld:
float x;
float* px;
x = 6.5;
px = &x;
bepaalt px om een wijzer te zijn aan voorwerpen van typevlotter, en plaatst het gelijk aan het adres van x. Aldus, * px verwijst naar de waarde van x:
|