Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: FKT en 20 Agosto 2015, 14:31 pm



Título: Diferencias entre funcion que retorna y no retorna.
Publicado por: FKT en 20 Agosto 2015, 14:31 pm
Bueno como dice el titulo cual es la diferencia entre una funcion que retorna y otra que no y imagino que va relacionado con el tipo de dato "void".


Título: Re: Diferencias entre funcion que retorna y no retorna.
Publicado por: ivancea96 en 20 Agosto 2015, 15:02 pm
Una función que retorna, devuelve un valor u objeto.

Por ejemplo, la función "atoi(char*)", coge una cadena, y la transforma en un int.

Código
  1. char s[] = "21";
  2. int n = atoi(s);

"atoi" retorna el entero 21.

Las funciones void, simplemente no retornan. Hacen un trabajo, el que sea, y no devuelve nada.


Título: Re: Diferencias entre funcion que retorna y no retorna.
Publicado por: FKT en 20 Agosto 2015, 15:08 pm
Imagino que eres programador por la forma en que me lo explicas pero yo apenas se usar algunos bucles, variables printf() y algo más jeje.

Siento la obligación de preguntarte también que es un objeto en C.

 :P


Título: Re: Diferencias entre funcion que retorna y no retorna.
Publicado por: ivancea96 en 20 Agosto 2015, 15:23 pm
Bueno, en C no hay objetos. En C++ sí. Por así decirlo, es como una estructura de C, pero con algunos cambios. Los lenguajes que los utilizan sson lenguajes de Programación Orientada a Objetos (POO). Si estás empezando en C, olvida los objetos.

Por ejemplo, printf:

Código
  1. int printf(const char*, ...);

Esa es la definición de printf. Los argumentos, más o menos a sabrás como van.
Ahora bien, printf retorna int. No es de gran importancia. Puedes probar a guardar lo que retorna en una variable, y luego sacarla por pantalla para ver qué es.

Printf retorna el número de caracteres que ha escrito en pantalla.
Por ejemplo:
Código
  1. printf("%i", 22);
Retorna 2, pues escribirá 2 caracteres. Mera información.


Título: Re: Diferencias entre funcion que retorna y no retorna.
Publicado por: FKT en 20 Agosto 2015, 21:43 pm
Entiendo el segundo ejemplo ya que printf()  va ha mostrar en pantalla el numero 2 es así?

Y el primer ejemplo no entiendo lo de (const char*, ...);
Lo único que entiendo de el ejemplo es que se va ha mostrar algo en pantalla que después de mirarlo mucho y pensarlo no he llegado a la conclusión y que hay una variable char.

Creo que aun estoy en lo más básico porque no entiendo tu sintaxis en el interior de printf().

Y sigo sin entenderpara que sirve que retorne un numero, quizás para que el programa sepa que no ha habido ningún error en el programa? Imagino que es eso pero de que sirve que una funcion
Código
retorne un valor, no basta con el
Código
  1. return 0;
de el final?


Título: Re: Diferencias entre funcion que retorna y no retorna.
Publicado por: ivancea96 en 20 Agosto 2015, 22:04 pm
"printf" te retorna el número de caracteres que ha escrito. Luego ese valor, lo puedes guardar en una variable, y hacer con ella lo que quieras.

El "main" no es una función normal. Es el punto de entrada dle programa, donde comienza a ejecutarse. Lo que retorna, es un valor que leerá el sistema operativo.

Lo de "int printf(const char*, ...);" es la declaración de la función "printf". Esto es, solo el prototipo para que sepas cual es su valor de retorno (int), y qué parámetros hay que pasarle (const char*, ...).
(Lo del "..." ignóralo ahora xD)

Imagina que quieres elevar al cuadrado un número. Hay una función en la librería "math.h" que es:
Código
  1. float pow(float base, float exponente);

Así que si quieres elevar un número al cuadrado, o a cualquier otro exponente, la llamas:
Código
  1. float num = pow(10, 5);
Ahora la variable "num" tendrá el valor 100000. Eso es el retorno.

Si aun no te queda claro, puedes ver este vídeo, de Minidosis, una página para aprender principalmente C++. Pero no importa, vale para C igual.
http://www.minidosis.org/#/actividades/Cpp.Funciones.Subprogramas.vid (http://www.minidosis.org/#/actividades/Cpp.Funciones.Subprogramas.vid)

*Lo de "cout" y "cin" son formas de mostrar en pantalla, y leer entrada, como printf y scanf*

Llámalo subprograma, llámalo función, =.


Título: Re: Diferencias entre funcion que retorna y no retorna.
Publicado por: DarK_FirefoX en 20 Agosto 2015, 22:20 pm
Con lo que te dijo @ivancea96  ^^ creo que tienes.

De cualquier manera, te recomiendo te leas el punto 1 y sus apartados en este link:

https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Uso_de_funciones

*Cuando avances podrás leerte y entender el punto 2.

Salu2s


Título: Re: Diferencias entre funcion que retorna y no retorna.
Publicado por: FKT en 21 Agosto 2015, 00:31 am
Muchas gracias me han parecido super interesantes los links del video y porfin me ha ayudado ha entenderlo ;-) :xD

Y bueno gracias por tomaros el tiempo para explicarmelo ;D