C – Intercambiar variables con apuntadores

En este post voy a explicar un ejercicio básico con apuntadores en C; haremos una función que intercambia dos variables intercambiando la dirección de memoria de las mismas.

A esto también se le llama “intercambiar variables por referencia” y funcionan gracias a las funciones por referencia en C.

Intercambiar dos variables por referencia en C

Tenemos la función que recibe las dos variables, o mejor dicho, los dos apuntadores a las variables (se denota por el asterisco).

Dentro de la función creamos una temporal, y luego hacemos el intercambio; no se regresa nada con return porque ya intercambiamos las variables por referencia.

/*
Simple función que intercambia dos variables por referencia.
Más información en:
Funciones por referencia y por valor en C
*/ void intercambiar(int *a, int *b) { int temporal = *a; *a = *b; *b = temporal; }

Recuerda que para obtener un apuntador a la variable (o mejor dicho, su dirección de memoria) se utiliza el operador &, en los ejemplos se verá mejor.

Ejemplo de intercambio de variable por referencia

Ahora veamos un ejemplo básico; aunque estas funciones se usan en algoritmos más complejos por ahora veremos un ejemplo realmente sencillo.

Vamos a imprimir dos variables antes y después de ser intercambiadas usando apuntadores. El código queda así:

#include <stdio.h>

/*
Simple función que intercambia dos variables por referencia.
Más información en:
Funciones por referencia y por valor en C
*/ void intercambiar(int *a, int *b) { int temporal = *a; *a = *b; *b = temporal; } int main(void) { int edad1 = 10, edad2 = 20; printf("Antes de intercambiar. edad1: %d, edad2: %d\n", edad1, edad2); intercambiar(&edad1, &edad2); printf("Después de intercambiar. edad1: %d, edad2: %d", edad1, edad2); return 0; } /* Salida: Antes de intercambiar. edad1: 10, edad2: 20 Después de intercambiar. edad1: 20, edad2: 10 */

La magia sucede en la línea 17; en ella intercambiamos las variables. Para pasar correctamente el apuntador, obtenemos la dirección de memoria con &.

Por cierto, en este caso el orden de las variables no importa, pues al final se va a intercambiar una por otra.

Estoy aquí para ayudarte 🤝💻


Estoy aquí para ayudarte en todo lo que necesites. Si requieres alguna modificación en lo presentado en este post, deseas asistencia con tu tarea, proyecto o precisas desarrollar un software a medida, no dudes en contactarme. Estoy comprometido a brindarte el apoyo necesario para que logres tus objetivos. Mi correo es parzibyte(arroba)gmail.com, estoy como@parzibyte en Telegram o en mi página de contacto

No te pierdas ninguno de mis posts 🚀🔔

Suscríbete a mi canal de Telegram para recibir una notificación cuando escriba un nuevo tutorial de programación.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *