AD

¿Ya dominas lo básico? Un curso estructurado de C es la vía rápida para dar el salto.

Ver cursos de C en Udemy

Enlace de afiliado. No te cuesta nada extra.

🔧Lecciones de C
Lección 40 / 68

Copia superficial y copia profunda

En esta lección verás qué se copia de verdad al asignar una estructura y qué no.

Asignar una estructura copia sus campos. Pero si uno de ellos es un puntero, lo que se copia es la dirección, no lo apuntado: las dos estructuras acaban compartiendo el mismo dato.

El código de ejemplo copia una persona y modifica la ciudad a través de la copia; el original también cambia, porque ambos apuntan a la misma dirección.

Esa es exactamente la diferencia entre copia superficial y copia profunda. Para que fueran independientes habría que reservar memoria nueva y copiar el contenido con strcpy o memcpy: eso es la copia profunda.

Es una de las fuentes de error más difíciles de diagnosticar, porque el síntoma aparece lejos de la causa: modificas una cosa y cambia otra que creías separada. Y en C hay un peligro añadido: si se libera la memoria compartida, la otra estructura queda con un puntero colgante.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar C directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)