Buenas! Creo que el programa es más bien sencillo, pero a ver si así puedo comprender punteros, el programa pide que devuelva el menor de 3 números:
Código:
#include <stdio.h>
#include <stdlib.h>
float menor(float,float,float);
void swap(float*,float*);
int main() {
// declaraciÛn de variables
float a, b, c;
// cuerpo de main()
printf("Introduce 3 reales: ");
scanf("%f%f%f", &a, &b, &c);
printf("El menor es: %f\n", menor(a, b, c));
system("pause");
return 0;
}
void swap(float *a, float *b) {
float aux;
aux = *a;
*a = *b;
*b = aux;
}
float menor(float a, float b, float c) {
if(a > b) swap(&a, &b);
if(b > c) swap(&b, &c);
if(a > b) swap(&a, &b);
return a;
}
Entonces si a>b envía la direccion de la variable a y b a la función swap, perfecto. Luego swap recibe el contenido de la dirección de a y b y cambia los valores para que el menor sea a. Pero luego compara b y c y cuando la función devuelve los valores de swap, habiéndole pasado
if(b > c) swap(&b, &c); , ¿donde los graba en a / b? es que ahí es donde me quedo.
Si alguien fuera tan amable de explicármelo qué hace el puntero ahí se lo agradecería mucho en serio.
Gracias!