Veamos cómo se utilizan los punteros en el lenguaje de programación C.
Vamos a tratar con dos variables:
aptr
También vamos a encontrarnos con dos personajes clave:
- where would return the address location of variable - where means follow the memory address stored in ptr and set that location to 8
Supongamos que a
está ubicado en la dirección 0x8130 en la memoria y ptr
en 0x8134; también suponga que esta es una máquina de 32 bits, de manera que un int es de 32 bits en tamaño. Lo siguiente es lo que estaría en la memoria después de que se ejecute el siguiente fragmento de código:
int a = 5;int *ptr = NULL;
Dirección | Contenido |
---|---|
0x8130 | 0x00000005 |
0x8134 | 0x00000000 |
(El puntero NULL que se muestra aquí es 0x00000000.) Asignando la dirección de a
a ptr
:
ptr = &a;
produce los siguientes valores de memoria:
Dirección | Contenido |
---|---|
0x8130 | 0x00000005 |
0x8134 | 0x00008130 |
Luego, al eliminar la referencia ptr
codificando:
*ptr = 8;
la computadora tomará el contenido de ptr
(que es 0x8130), «ubique» esa dirección y asigne 8 a esa ubicación para obtener la siguiente memoria:
Dirección | Contenido |
---|---|
0x8130 | 0x00000008 |
0x8134 | 0x00008130 |
Claramente, acceder a a
producirá el valor de 8 porque la instrucción anterior modificó el contenido de
mediante el puntero ptr
.