Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/08/2013, 02:22
picman
 
Fecha de Ingreso: julio-2013
Mensajes: 11
Antigüedad: 10 años, 10 meses
Puntos: 0
¿Alguien me puede explicar punteros con este programa?

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!