Punteros en C: ejercicio resuelto
Si has llegado por punteros en C ejercicios resueltos, este ejemplo ataca una base real: modificar valores desde una función con paso por referencia.
Enunciado
Crea una función intercambiar que reciba dos enteros por referencia y cambie sus valores. Muestra el estado antes y después.
Solución en C
#include <stdio.h>
void intercambiar(int *a, int *b) {
int tmp = *a;
*a = *b;
*b = tmp;
}
int main(void) {
int x = 12;
int y = 45;
printf("Antes: x=%d, y=%d\n", x, y);
intercambiar(&x, &y);
printf("Despues: x=%d, y=%d\n", x, y);
return 0;
}Salida esperada
Antes: x=12, y=45
Despues: x=45, y=12Caso borde recomendado
Prueba también valores iguales:
Antes: x=7, y=7
Despues: x=7, y=7Sirve para confirmar que la función es correcta incluso cuando no hay cambio visible.
Qué aprendes en este ejercicio
- operador direccion
&, - desreferenciacion con
*, - paso por referencia en C,
- modificacion de datos fuera de la función.
Errores frecuentes
- Pasar
xen lugar de&x. - Usar punteros no inicializados.
- Confundir
*p(valor) conp(direccion). - Llamar a la función con punteros
NULLen versiones más generales.
Complejidad temporal y espacial
- Tiempo: O(1).
- Espacio extra: O(1).
Aplicación práctica
Este patrón se usa constantemente en codigo de alto rendimiento y en sistemas donde necesitas modificar estructuras grandes sin copiar memoria.
Siguiente ejercicio recomendado
- Struct en C: ejercicio resuelto con arrays de estructuras
- Malloc y free en C: ejercicio resuelto de memoria dinamica
- Búsqueda binaria en C: ejercicio resuelto en array ordenado
- Todos los ejercicios de C
Práctica guiada y siguiente paso
Si quieres una ruta completa con progresión real de dificultad:
FAQ
¿Este ejercicio sirve para empezar con punteros en C?
Sí. Es uno de los primeros ejercicios que conviene dominar antes de memoria dinamica y listas enlazadas.
¿Dónde seguir practicando?
Puedes seguir en Programación en C en 100 ejercicios resueltos y leerlo también en Kindle Unlimited: Ver en Amazon.
¿Cómo practicar este tipo de ejercicio para mejorar más rápido?
Empieza con entradas pequeñas, prueba casos límite (vacío, un elemento y capacidad máxima) y luego reescribe la solución sin copiarla.