Punteros en C: ejercicios resueltos de paso por referencia

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

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#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

1
2
Antes: x=12, y=45
Despues: x=45, y=12

Caso borde recomendado

Prueba también valores iguales:

1
2
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.

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 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.

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

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.