Retornar algo es cuando usas el return algo. si ese algo que vas retornar es un entero pues la función queda:
int funcion(void){
return 10;
}
Ahora digamos que vas imprimir algo como un saludo simple, eso no retorna nada, pues seria:
void funcion(void){
printf("Hola");
}
lo que ves dentro de los paréntesis (void) quiere decir que no le estas pasando nada ou seja que no recibe nada.
los puedes dejar en blanco y tienen el mismo efecto aun que bueno es ponerlo, asi indicas que no recibe nada.
Cuando pones int delante de la declaración de una función es lo mismo que cuando pones int delante de la declaración de una variable de esta forma(int funcion(void)). La diferencia es que estas reservando un entero para ese valor que vas a retornar, pero como hemos visto que hay funciones que no retornan valores, pues esas la pones void delante, para no reservar memoria que no vas usar. Entiendes?
Que hay de parecido en declarar una variable y una funcion?
int n;
int f();
????
-n es un entero que lo usaremos a cualquier momento dentro de una función.
-f() es una función que retorna un entero, lo sabemos por que delante de ella hay un claro int, ese int garantiza un espacio en memoria para ese valor de retorno.
recuerde que ponemos int, float, char delante de las variables funciones y otros, en la declaración solamente por que eso es lo que es "Estamos reservando memoria", por eso se pone una sola vez. Luego si vamos mudar el valor a una variable no hay lógica poner int nuevamente delante por ejemplo por que seria como querer reservar otro espacio con el mismo nombre, y eso confundiría el programa, no se puede.
int f(void){ int n = 10; return n; } // reserva memoria para el return, este es otro n, no el mismo de main, esta en otra funcion
float f2(); // Prototipo de función, simplemente dice que la función debería estar aquí pero puede estar después de main lleva punto y coma y no lleva el cuerpo, sirve para que main la vea aun que este en otra parte.
int main(){
int n; //reservamos memoria
n=10 //cambiamos el valor a n
int n=100 //no tiene sentido ya existe una memoria reservada con ese nombre
return 0;
}
//implementacion de la funcion f2(), es lo mismo pero sin punto y coma y si lleva el cuerpo.
float f2(void){
return 2.2
}
En fin espero que sirva.
pd: aun que una funcion no retorne nada puedes poner return a secas:
void funcion(void){
return;
}
Como ves no retorna nada.
La funcion de return son 2 cosas. la primera es detener el programa en ese punto:
void funcion(void){
return;
printf("hola");
}
Hola no se imprimiría ya que la función se detendría en el return.
La segunda función de return es devolver un numero.
Entonces return = a detener o detener+retornar ;)
BAY!