Programación de funciones de intercambio
//?Intercambia el valor del puntero dado en una variable entera.
//?Parámetros:
//a? - gt;? Puntero a la primera variable
//b? - gt;? ¿El puntero a la segunda variable
no es válido? intercambiar(int*?a,?int?*?b);
int? principal(int?argc,?int?argv)
{
int? ¿respuesta? =?3,?b? =?5;
Printf_s("Antes del intercambio: a?=?d,?b?=?d\n ", a,?b);
Intercambio(amp 1 .? ampb);
Printf_s("Después del intercambio: a?=?d,?b?=?d\n ", 1.?b);
¿Devolver? 0;
}
//?Intercambia el valor del puntero dado a una variable entera.
//?Parámetros:
//a? - gt;? Puntero a la primera variable
//b? - gt;? ¿El puntero a la segunda variable
no es válido? swap(int*?一,?int*?b)
{
//?Declara una variable temporal y guarda el primer puntero a la variable.
//¿El valor de?
//?¿Entre ellos? *¿a? ¿Lo has sacado? ¿respuesta? El puntero apunta al valor de la variable.
int? ¿Trabajador temporal? =?* a;
//?Voluntad. ¿b? ¿Se asigna el valor señalado por el puntero? ¿respuesta? ¿Puntero variable
(*a)? =?(* b);
//?¿Habrá variables temporales? ¿Trabajador temporal? ¿Guardado en? ¿respuesta? El puntero apunta a la tarea.
//?b? La variable señalada por el puntero.
(*b)? =?Temperature;
}Los resultados de ejecución del código anterior son los siguientes:
El siguiente código implementa la función de usar definiciones de macros como plantillas para declarar diferentes tipos de funciones de intercambio.
Tome la declaración de doble y flotante como ejemplo:
#Contains? ltstdio.hgt?
//?¿Declarar una plantilla de código de función, referencia lógica? swap(int*?一,?int*?b)
#Definición? ¿DEF_SWAP_FUNC(tipo)? ¿Vacío? swap_##Tipo(Tipo*? Uno,? Tipo*? b)? \
{?\
¿Tipo? ¿Trabajador temporal? =?(*a);? \
(*a)? =?(*b);? \
(*b)? =?Temperatura;? \
}?
//?¿Declarar e implementar una plantilla? ¿Doble? Escriba función de intercambio de variables, ¿nombre de la función? swap_double
Define_swap_FUNC(double)
//? ¿Declarar e implementar una plantilla? ¿flotar? Escriba función de intercambio de variables, ¿nombre de la función? EXCHANGE_FLOAT
DEFINE_EXCHANGE_FUNC(FLOAT)
int? main(int? argc,? int? argv)
{
//?Double? Escriba Intercambio de datos
¿Doble? ¿Papá? =?5.6,?db? =?3.5;
printf_s("¿doble? antes de la comunicación: da?=?lf,db?=?lf\n ",da,?db);
swap _ double (amp;da,? ampdb);
printf_s("¿doble? Después de la comunicación: da?=?lf,db?=?lf\n ",da,?db);
//?¿Flotante? Tipo intercambio de datos
¿Flotador? ¿Ley? =?3.4,?fb? =?6.8;
printf_s("¿flotar? Antes de la comunicación: fa?=?f,?fb?=?f\n ",fa,?FB);
swap_float. Ley,? ampFB);
printf_s("¿float? Antes de la comunicación: fa?=?f,?fb?=?f\n ", método,?FB);
¿Regresar? 0;
}Los resultados de la ejecución son los siguientes: