agrego practicas
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
/* ============================================================================
|
||||
* 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;
|
||||
}
|
||||
Executable
BIN
Binary file not shown.
Reference in New Issue
Block a user