C permite que una única ubicación de memoria tenga múltiples alias. Puede declarar varios punteros y hacer que todos hagan referencia a la misma variable. Esto no es sólo una peculiaridad del idioma. Es una característica fundamental que cambia la forma en que administra la memoria y el acceso a los datos.
Considere este escenario. Necesita varios identificadores para la misma variable entera. Puedes declararlos todos y vincularlos al instante.
En este bloque, p, q y r son todos punteros enteros. Todos apuntan a “i”. La asignación r = p no copia el valor de i. Copia la dirección almacenada en p. Dado que “p” tiene la dirección de “i”, “r” ahora también tiene la dirección de “i”.
Una variable, muchos nombres
Después de la ejecución, hay una variable entera “i” en la memoria. Pero hay cuatro formas de referirse a esos datos exactos.
i: El nombre de la variable original.*p: El valor en la dirección enp.*q: El valor en la dirección enq.*r: El valor en la dirección enr.
Son idénticos. Cambiar “yo”. *p cambia. Cambie *q. yo cambia. Los datos viven en una dirección. Los indicadores son sólo etiquetas.
No existe un límite estricto sobre cuántos punteros pueden contener la misma dirección. Puedes encadenarlos indefinidamente. a = &i; segundo = a; c = segundo; d = c; funciona de la misma manera. Cada asignación copia el valor del puntero. No crea una nueva copia de los datos.
“Cualquier número de punteros pueden apuntar a la misma dirección.”
Esta capacidad es poderosa para pasar referencias alrededor de funciones o construir estructuras vinculadas. Mantiene el uso de la memoria ajustado. También introduce un riesgo. Si elimina la referencia a uno de estos punteros, toca el mismo byte subyacente. Los errores en un alias se propagan a todos ellos. Pero cuando se usa correctamente, esta característica es una práctica estándar de C.



























