Să aruncăm o privire asupra modului în care sunt folosiți pointerii în limbajul de programare C.
Vom trata două variabile: >
aptr
De asemenea, vom întâlni două caractere cheie:
- where would return the address location of variable - where means follow the memory address stored in ptr and set that location to 8
Să presupunem că a se află la adresa 0x8130 în memorie și ptr la 0x8134; presupunem, de asemenea, că este o mașină de 32 de biți, astfel încât un int să aibă 32 de biți în dimensiune. Următorul este ceea ce ar fi în memorie după executarea următorului fragment de cod:
int a = 5;int *ptr = NULL;
| Adresă | Conținut |
|---|---|
| 0x8130 | 0x00000005 |
| 0x8134 | 0x00000000 |
(Pointerul NULL afișat aici este 0x00000000.) Prin atribuirea adresei a la ptr:
ptr = &a;
produce următoarele valori ale memoriei:
| Adresă | Conținut |
|---|---|
| 0x8130 | 0x00000005 |
| 0x8134 | 0x00008130 |
Apoi, prin dereferențierea ptr prin codificare:
*ptr = 8;
computerul va prelua conținutul ptr (care este 0x8130), „localizați” acea adresă și atribuiți 8 locației respective obținând următoarea memorie:
| Adresă | Conținut |
|---|---|
| 0x8130 | 0x00000008 |
| 0x8134 | 0x00008130 |
În mod clar, accesarea a va produce valoarea 8 deoarece instrucțiunea anterioară a modificat conținutul
prin intermediul indicatorului ptr.