Múltiples punteros que apuntan a una dirección de memoria

5

C le permite crear una situación en la que varios punteros hacen referencia exactamente al mismo lugar en la memoria. Puede declarar varios punteros y hacer que todos apunten a la misma variable. Esto no es sólo una peculiaridad teórica. Sucede constantemente en código real.

Considere este fragmento:

Aquí, “p” toma la dirección de “i”. q hace lo mismo. Entonces r toma el valor de p. Dado que “p” contiene la dirección de “i”, “r” ahora también apunta a “i”. El operador de asignación copia la dirección del lado derecho al izquierdo. No copia los datos. Copia la ubicación.

Después de ejecutar estas líneas, “i” efectivamente ha obtenido alias. Ahora puedes acceder al número entero i a través de su nombre original o mediante cualquiera de los punteros.

La variable i ahora tiene cuatro nombres: i, *p, *q y *r.

No existe un límite estricto sobre el número de punteros que pueden contener la misma dirección. Puedes encadenarlos tan profundamente como necesites. Cambie *p y *r verá el cambio. Todos miran la misma celda de memoria.

Cualquier número de punteros puede apuntar a la misma dirección.

Este comportamiento es fundamental para el funcionamiento de los punteros. No es un caso especial. Es lo predeterminado. Comprender esto le ayudará a evitar confusiones al depurar. Si ve valores inesperados, verifique si varios punteros están modificando la misma ubicación. No es magia. Es sólo memoria.