Vamos dar uma olhada em como os ponteiros são usados na linguagem de programação C.
Vamos lidar com duas variáveis:
aptr
Também encontraremos dois personagens principais:
- where would return the address location of variable - where means follow the memory address stored in ptr and set that location to 8
Suponha que a
está localizado no endereço 0x8130 na memória e ptr
em 0x8134; também suponha que esta seja uma máquina de 32 bits, de modo que um int é de 32 bits em size. O seguinte é o que estaria na memória após a execução do seguinte snippet de código:
int a = 5;int *ptr = NULL;
Endereço | Conteúdo |
---|---|
0x8130 | 0x00000005 |
0x8134 | 0x00000000 |
(O ponteiro NULL mostrado aqui é 0x00000000.) Atribuindo o endereço de a
a ptr
:
ptr = &a;
produz os seguintes valores de memória:
Endereço | Conteúdo |
---|---|
0x8130 | 0x00000005 |
0x8134 | 0x00008130 |
Em seguida, desreferenciando ptr
codificando:
*ptr = 8;
o computador pegará o conteúdo de ptr
(que é 0x8130), “localize” esse endereço e atribua 8 a esse local, resultando na seguinte memória:
Endereço | Conteúdo |
---|---|
0x8130 | 0x00000008 |
0x8134 | 0x00008130 |
Claramente, acessar a
renderá o valor 8 porque a instrução anterior modificou o conteúdo de
por meio do ponteiro ptr
.