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
.