C tiene una peculiaridad que hace tropezar a los principiantes pero impulsa sistemas complejos. Puede apuntar docenas de punteros a la misma dirección de memoria.
Considere un entero simple “i”. Puede declarar tres punteros (p, q y r ) y vincularlos todos a él.
Esto no es magia. Es sólo una copia de direcciones. Cuando escribe r = p, el compilador copia la dirección contenida en p en r. Lo mismo sucede con q.
Ahora “i” tiene cuatro nombres. Es “yo”. Es *p. Es *q. Es *r.
No hay un límite estricto para esto. Puede tener cientos de punteros que hagan referencia a la misma porción de RAM. Cada una es una variable distinta en su código, pero todas se resuelven exactamente en la misma ubicación en la memoria.
Es por eso que los cambios realizados a través de un puntero afectan a todos los demás. ¿Modificar *p? El valor en esa dirección también cambia para “q” y “r”. Es una vista directa de los mismos datos.
¿Por qué esto importa? Porque permite el alias. Su programa puede analizar los mismos datos a través de lentes diferentes. Un puntero podría tratarlo como una estructura. Otro podría tratarlo como una matriz de bytes sin formato. Los datos no cambian. La interpretación sí.
Esta flexibilidad es poderosa. También es donde se esconden los insectos. Si pierde la noción de qué puntero está dónde, es posible que sobrescriba datos que no era su intención. Pero por ahora, recuerde: los punteros son sólo direcciones. Y las direcciones se pueden compartir.




















