Låt oss ta en titt på hur pekare används i C-programmeringsspråket.
Vi ska hantera två variabler:
aptr
Vi kommer också att möta två nyckeltecken:
- where would return the address location of variable - where means follow the memory address stored in ptr and set that location to 8
Antag att a
finns på adressen 0x8130 i minnet och ptr
vid 0x8134; antag också att detta är en 32-bitars maskin så att en int är 32-bitars i storlek. Följande är vad som skulle finnas i minnet efter att följande kodavsnitt har körts:
int a = 5;int *ptr = NULL;
Adress | Innehåll |
---|---|
0x8130 | 0x00000005 |
0x8134 | 0x00000000 |
(NULL-pekaren som visas här är 0x00000000.) Genom att tilldela adressen till a
till ptr
:
ptr = &a;
ger följande minnesvärden:
Adress | Innehåll |
---|---|
0x8130 | 0x00000005 |
0x8134 | 0x00008130 |
Sedan genom att referera ptr
genom att koda:
*ptr = 8;
tar datorn innehåll i ptr
(vilket är 0x8130), ”lokalisera” den adressen och tilldela 8 den platsen vilket ger följande minne:
Adress | Innehåll |
---|---|
0x8130 | 0x00000008 |
0x8134 | 0x00008130 |
Det är uppenbart att åtkomst till a
ger värdet 8 eftersom den tidigare instruktionen modifierade innehållet i
via pekaren ptr
.