Laten we eens kijken hoe pointers worden gebruikt in de C-programmeertaal.
We gaan twee variabelen behandelen:
aptr
We gaan ook twee sleuteltekens tegenkomen:
- where would return the address location of variable - where means follow the memory address stored in ptr and set that location to 8
Stel dat a
bevindt zich op adres 0x8130 in het geheugen en ptr
op 0x8134; neem ook aan dat dit een 32-bits machine is, zodat een int 32-bits is in grootte. Het volgende is wat er in het geheugen zou zijn nadat het volgende codefragment is uitgevoerd:
int a = 5;int *ptr = NULL;
Adres | Inhoud |
---|---|
0x8130 | 0x00000005 |
0x8134 | 0x00000000 |
(De NULL-pointer die hier wordt weergegeven is 0x00000000.) Door het adres van a
toe te wijzen aan ptr
:
ptr = &a;
levert de volgende geheugenwaarden op:
Adres | Inhoud |
---|---|
0x8130 | 0x00000005 |
0x8134 | 0x00008130 |
Door vervolgens ptr
te derefereren door te coderen:
*ptr = 8;
zal de computer de inhoud van ptr
(dat is 0x8130), “lokaliseer” dat adres, en wijs 8 toe aan die locatie, wat het volgende geheugen oplevert:
Adres | Inhoud |
---|---|
0x8130 | 0x00000008 |
0x8134 | 0x00008130 |
Het is duidelijk dat toegang tot a
de waarde 8 oplevert, omdat de vorige instructie de inhoud van
door middel van de aanwijzer ptr
.