Lad os se på, hvordan markører bruges i C-programmeringssprog.
Vi skal håndtere to variabler:
aptr
Vi møder også to nøglepersoner:
- where would return the address location of variable - where means follow the memory address stored in ptr and set that location to 8
Antag at a
er placeret på adresse 0x8130 i hukommelsen og ptr
ved 0x8134; antag også, at dette er en 32-bit maskine, således at en int er 32-bit i størrelse. Følgende er, hvad der ville være i hukommelsen, efter at følgende kodestykke er udført:
int a = 5;int *ptr = NULL;
Adresse | Indhold |
---|---|
0x8130 | 0x00000005 |
0x8134 | 0x00000000 |
(NULL-markøren vist her er 0x00000000.) Ved at tildele adressen til a
til ptr
:
ptr = &a;
giver følgende hukommelsesværdier:
Adresse | Indhold |
---|---|
0x8130 | 0x00000005 |
0x8134 | 0x00008130 |
Derefter ved derferference ptr
ved kodning:
*ptr = 8;
tager computeren indholdet af ptr
(hvilket er 0x8130), “lokaliser” den adresse og tildel 8 til den placering, hvilket giver følgende hukommelse:
Adresse | Indhold |
---|---|
0x8130 | 0x00000008 |
0x8134 | 0x00008130 |
Det er klart, at adgang til a
giver værdien 8, fordi den tidligere instruktion ændrede indholdet af
ved hjælp af markøren ptr
.