49 lines
1.8 KiB
C
49 lines
1.8 KiB
C
/* ============================================================================
|
|
* 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 <stdio.h>
|
|
|
|
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;
|
|
}
|