Diferencias entre funcion que retorna y no retorna.

Iniciado por FKT, 20 Agosto 2015, 14:31 PM

0 Miembros y 1 Visitante están viendo este tema.

FKT

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".
Solo hay 10 tipos de personas, las que saben binario y las que no.

ivancea96

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.

char s[] = "21";
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.

FKT

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
Solo hay 10 tipos de personas, las que saben binario y las que no.

ivancea96

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:

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:
printf("%i", 22);
Retorna 2, pues escribirá 2 caracteres. Mera información.

FKT

#4
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 printf() retorne un valor, no basta con el return 0; de el final?
Solo hay 10 tipos de personas, las que saben binario y las que no.

ivancea96

"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:
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 (cpp) [Seleccionar]
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

*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, =.

DarK_FirefoX

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

FKT

#7
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
Solo hay 10 tipos de personas, las que saben binario y las que no.