/* ============================================================================ * Ejercicio: Modificación de un Puntero a través de un Puntero a Puntero (int **) * ============================================================================ * Objetivo: * Comprender el uso de punteros a punteros para modificar la dirección a la * que apunta un puntero original dentro de una función (pasaje por referencia). * * Descripción: * Escribe un programa en C que cumpla con los siguientes requisitos: * * 1. Define dos variables enteras, por ejemplo: `int x = 10;` e `int y = 20;`. * 2. Declara un puntero simple a entero, por ejemplo: `int *ptr = &x;`. * 3. Crea una función llamada `cambiar_puntero` que reciba un puntero a puntero * (`int **p_ref`) y la dirección de otra variable entera (`int *nueva_dir`). * La función debe actualizar el puntero original para que ahora apunte a * esa nueva dirección (`*p_ref = nueva_dir;`). * 4. En la función `main`, imprime el valor al que apunta `ptr` antes de llamar * a la función. * 5. Llama a `cambiar_puntero` pasando la dirección de `ptr` (`&ptr`) y la * dirección de `y` (`&y`). * 6. Vuelve a imprimir el valor al que apunta `ptr` después de la llamada para * verificar que ahora apunta a `y` (su valor debe ser 20). * * Restricciones: * - Debes utilizar obligatoriamente el operador de indirección doble (**). * - No olvides validar los conceptos de memoria y desreferenciación. * ============================================================================ */ #include void cambiar_puntero(int**, int*); int main(void){ int x = 20, y = 30; int* ptr = &x; printf("contenido de ptr = %d \n", *ptr); cambiar_puntero(&ptr, &y); printf("contenido de ptr = %d\n", *ptr); } void cambiar_puntero(int** ptr, int *address){ *ptr = address; }