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.
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:
*/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.
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:
*/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.
En este post te quiero compartir un código de C++ para listar y cancelar trabajos…
Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web…
Revisando y buscando maneras de imprimir un PDF desde la línea de comandos me encontré…
Esta semana estuve recreando la API del plugin para impresoras térmicas en Android (HTTP a…
Hoy te enseñaré a extraer la cadena base64 de una clave PEM usando una función…
Encender un foco con un Bot de Telegram es posible usando una tarjeta como la…
Esta web usa cookies.