Punteros en C: ejercicios resueltos de paso por referencia

  2 minutos

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.

Crea una función intercambiar que reciba dos enteros por referencia y cambie sus valores. Muestra el estado antes y después.

#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;
}
Antes: x=12, y=45
Despues: x=45, y=12

Prueba también valores iguales:

Antes: x=7, y=7
Despues: x=7, y=7

Sirve para confirmar que la función es correcta incluso cuando no hay cambio visible.

  • operador direccion &,
  • desreferenciacion con *,
  • paso por referencia en C,
  • modificacion de datos fuera de la función.
  • Pasar x en lugar de &x.
  • Usar punteros no inicializados.
  • Confundir *p (valor) con p (direccion).
  • Llamar a la función con punteros NULL en versiones más generales.
  • Tiempo: O(1).
  • Espacio extra: O(1).

Este patrón se usa constantemente en codigo de alto rendimiento y en sistemas donde necesitas modificar estructuras grandes sin copiar memoria.

Si quieres una ruta completa con progresión real de dificultad:

Sí. Es uno de los primeros ejercicios que conviene dominar antes de memoria dinamica y listas enlazadas.

Puedes seguir en Programación en C en 100 ejercicios resueltos y leerlo también en Kindle Unlimited: Ver en Amazon.

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.