Ejercicio 02 — Funcion incrementar(int *p, int delta) que suma delta al entero…
Dificultad: verde · Módulo 07 (Punteros)
Enunciado
Funcion incrementar(int *p, int delta) que suma delta al entero apuntado.
Diagrama de flujo

Cómo se resuelve
Aquí se ve para qué sirven de verdad los punteros: modificar una variable desde dentro de una función. En C los argumentos se pasan por copia, así que si incrementar recibiera un int normal, tocaría solo su copia y el original no cambiaría. Pasando la dirección, sí puede modificar el original.
- La función recibe
int *p: una dirección. Dentro,*p = *p + delta;lee el valor apuntado, le sumadeltay lo vuelve a escribir en la misma celda. Ese*pen ambos lados es la clave: opera sobre el valor, no sobre la dirección. - En
mainla llamada esincrementar(&a, 5);. El&es imprescindible: pasas dónde estáa, no cuánto valea.
Trampa habitual: escribir incrementar(a, 5) sin el &. El compilador espera un int * y le das un int, así que darás un warning (o error) de tipos; y si de algún modo compilara, la función no podría cambiar a. Regla mental: si quieres que una función modifique tu variable, pásale su dirección con & y accede dentro con *.
Para practicar — cópialo en Dev-C++
Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.
/*
* Curso de C — Modulo 07: Punteros
* Ejercicio 02 — PRACTICA (rellena los TODO)
* Enunciado: Funcion incrementar(int *p, int delta) que suma delta al entero apuntado.
* Dificultad: verde
* Compilar: gcc -std=c11 -Wall ej02_practica.c -o ej02 && ./ej02
*/
#include <stdio.h>
/*
* TODO 1: Define la funcion incrementar.
* Firma: void incrementar(int *p, int delta)
* Dentro: suma delta al valor apuntado por p usando *p
*/
int main(void) {
int a = 10;
int b = 3;
// TODO 2: Llama a incrementar para sumar 5 a 'a'.
// Recuerda pasar la DIRECCION de a, no su valor.
// TODO 3: Llama a incrementar para sumar 5 a 'b'.
// TODO 4: Imprime el resultado con el formato exacto:
// "a=10 -> <nuevo valor>"
// "b=3 -> <nuevo valor>"
return 0;
}Solución — cópiala y ejecútala
/*
* Curso de C — Modulo 07: Punteros
* Ejercicio 02 — MODELO (resuelto)
* Enunciado: Funcion incrementar(int *p, int delta) que suma delta al entero apuntado.
* Dificultad: verde
* Compilar: gcc -std=c11 -Wall ej02_modelo.c -o ej02 && ./ej02
*/
#include <stdio.h>
/* Suma delta al entero apuntado por p */
void incrementar(int *p, int delta) {
*p = *p + delta; // modifica la variable original del llamador
}
int main(void) {
int a = 10;
int b = 3;
incrementar(&a, 5); // pasamos la direccion; a quedara en 15
incrementar(&b, 5); // b quedara en 8
printf("a=10 -> %d\n", a);
printf("b=3 -> %d\n", b);
return 0;
}Cómo usarlo
Dev-C++ (Windows): Archivo → Nuevo → Código fuente, pega el código y pulsa F11 (compilar y ejecutar). Si ves los acentos raros en la consola, escribe chcp 65001 y vuelve a ejecutar.