agrego practicas

This commit is contained in:
2026-10-31 11:14:30 -03:00
parent 392cf493d1
commit f4f56db493
50 changed files with 1899 additions and 0 deletions
+48
View File
@@ -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;
}