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;
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. |