6.5) La sentencia return y las funciones de tipo void.
     
     

     La sentencia return tiene dos usos importantes. Primero, fuerza una salida inmediata de la función en que se encuentra. O sea, hace que la ejecución del programa vuelva al código que llamó a la función. En segundo lugar, se puede utilizar para devolver un valor.
     

     
    La vuelta de una función ocurre cuando se ha ejecutado la última sentencia de la función y, conceptualmente, se encuentra la llave } del final de la función.
       
     
       
    Todas las funciones, excepto aquellas de tipo void, devuelven un valor. Este valor se especifica explícitamente en la sentencia return. Si no la sentencia return, el valor devuelto por la función queda técnicamente indefinido. En otras palabras mientras una función no se declare como void, puede ser usada como operando en cualquier expresión válida de C.
     

     Veamos todo esto en un ejemplo gráficamente:
     

         
         
     
     
     
     

     Si una función devuelve un entero, no es necesario declararla de tipo int, pues para el lenguaje todas las funciones devuelven un entero, a menos que se indique lo contrario. Si una función que devuelve un carácter se declara de tipo entero, el carácter se convierte adecuadamente, por lo que no es necesario declarar la función de tipo carácter.
     
     

     Cuando un función no devuelve un valor entero, se debe especificar el tipo de resultado que entrega antes de llamar a la función. No obstante, si se declaran prototipos para las funciones, no hay por qué preocuparse posteriormente del orden en que se declaran las funciones.
     
     
     
     
     


     
     

    Ejemplo:
     
     

    #include <stdio.h>

    int mul(int, int);   /* prototipo */

    void main (void)  /* no recibe nada ni devuelve nada la función principal (main()) */
    {
    int x=10, y=20, z;
     

      z=mul(x,y); /* 1 */
      printf("El resultado es: %d",mul(x,y)); /* 2 */
      mul(x,y); /* 3 */
    }

    mul(int a, int b)
    {
    return(a*b);
    }
     
     

    Esta función devuelve a la salida:

     
     
    El resultado es: 200
     
     
    En la línea 1 el valor de vuelta de mul() es asignado a z.
       
    En la línea 2 el valor de vuelta no se asigna, sino que se usa la función printf().
       
    Finalmente en la línea 3 el valor de vuelta se pierde porque no se asigna a otra variable ni se usa como parte de una expresión.