Calcula media

Esto es un ejemplo simple de función donde se llama para realizar su tarea (en este caso clacular la media de una serie de valores).

El programa principal es un programa que no tiene mucho que comentar, tiene unos datos que los muestra en pantalla y luego llama a una función para mostrar posteriormete el resultado.

En este programa hay se llama a dos funciones, por una parte "printf" (esta se llama más de una vez) y la función "fmedia" en el primer caso se encuentra en las librerías estandarizadas de "C" concretamente en "stdio.h" (esta función no sabemos como es, ni nos interesa, solo su interfaz para llamarla) la otra función fmedia la vamos a momentar.

fmeida la vamos a desglosar:

  1. En primer lugar esta función devuelve un "float" se llama "fmedia" y recibe dos parámetros
  2. Aunque la función en este caso podía haber recibido solamente parámetros por valor, recibe uno por referencia y luego uno por valor (esta parte de aquí es la que más explicación va a recibir)
    1. El segundo parámetro es el envío de un valor a entero
    2. El primer valor es el envío de un vector,(esto es paso por referencia), un vector no se puede enviar por valor en c y esta es la razón por la que se envía un segundo parámetro indicando el tamaño de este.
    3. Esta opción va a dar la flexibilidad para que se la función pueda recibir un tamaño tan grande como se desee pero hay que tener en cuenta el problema de las características del envío por referencia.
    4. Ahora por último, este punto no es necesario pero es la respuesta larga.
      C no consiente el envío por referencia , lo que se hace es enviar por valor un "entero" a título de este guarda la dirección de memoria del dato que sea, o lo que es lo mismo un "puntero a" en este caso a float.
      Para ser más concreto en este caso no estamos recibiendo "float *a" , está recibiendo "float a[]" que es lo mismo que "const float *a", es decir la direción a la que apunta el puntero no se va a poder modificar, pero las direcciones a las que apunta si y hay que decir que la mayoría de las direcciones, la función no es consciente de que están o no, ya que solo tiene una dirección apuntando al primero, y es esta la razón de necesitar un límite de valores enviado como segundo parámetro.
  3. Ahora lo siguiente es más simple: tenemos un programa que hace una cuenta simple (o un par), declaramos variables no retornamos valores por por el vector de referencia y finalmente devuelve un float mediante la sentencia "return" que a su vez da fin a esta parte del código.