Foros del Web » Programación para mayores de 30 ;) » C/C++ »

void , que es?????

Estas en el tema de void , que es????? en el foro de C/C++ en Foros del Web. buenas , leeo por todos lados. pero no llego a entender bien especificamente ... hace void... cuando se coloca void main ... dicen por ahi ...
  #1 (permalink)  
Antiguo 06/06/2010, 23:43
 
Fecha de Ingreso: julio-2009
Mensajes: 29
Antigüedad: 15 años, 4 meses
Puntos: 0
void , que es?????

buenas , leeo por todos lados. pero no llego a entender
bien especificamente ... hace void...
cuando se coloca void main ...
dicen por ahi " no devulve funcion"...

me podrian dar ejemplos de programas simples... que es lo que cambia con void , y sin void...

gracias "
  #2 (permalink)  
Antiguo 07/06/2010, 00:54
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: void , que es?????

Cuando declaras una función has de especificar siempre que devuelve. Por ejemplo, cuando la función realice una suma, se devuelve un entero, así que la función se declararía así:

Cita:
int suma(int a, int b)
Pero hay a veces en que no interesa devolver nada. En ese caso se dice que devuelve "void" (vacio/nada). Por ejemplo una función que dé de baja un usuario en la base de datos:

Cita:
void realizar_baja(char* usuario)
__________________
Aviso: No se resuelven dudas por MP!
  #3 (permalink)  
Antiguo 07/06/2010, 01:37
Avatar de l_alexco  
Fecha de Ingreso: febrero-2008
Mensajes: 9
Antigüedad: 16 años, 9 meses
Puntos: 0
Respuesta: void , que es?????

que no retorna nada significa que el valor en la funcion principal no cambia
  #4 (permalink)  
Antiguo 07/06/2010, 08:22
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: void , que es?????

Cita:
Iniciado por l_alexco Ver Mensaje
que no retorna nada significa que el valor en la funcion principal no cambia
No me he enterado de lo que querías decir :S

Que valor no cambia? Y si se llama desde una función auxiliar si que cambia? Y si los parametros se envían por referencia no cambian? O si?

Creo que tu respuesta, poco clara y mal explicada, lo va a liar más.
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 07/06/2010, 13:26
 
Fecha de Ingreso: febrero-2007
Mensajes: 163
Antigüedad: 17 años, 9 meses
Puntos: 0
Respuesta: void , que es?????

void en una funcion significa que esa funcion no devuelve ningun dato o sea que vos no podes usar esto: int resultado = calcular(); si calcular esta declarada como void calcular(); para eso deberias declararla como int calcular(); obviamente dentro de la funcion deberias codificar para que devuelva sino en el caso de void calcular(); deberias hacer un return; nada mas.
Ahora con la funcion main es un tema particular, vos en tu programa podes declarar void main(int argc, char** argv); sin problemas y tambien podes finalizar esa funcion haciendo return; pero tambien podes declararla como int main y hacer un return 1;.
Otra cuestion es que declaras un puntero a void, void* eso significa que el dato a donde esta apuntando ese puntero puede ser cualquier cosa, un entero, char o lo que sea.
  #6 (permalink)  
Antiguo 07/06/2010, 13:56
Avatar de pmike  
Fecha de Ingreso: marzo-2004
Ubicación: Barcelona
Mensajes: 313
Antigüedad: 20 años, 8 meses
Puntos: 7
Respuesta: void , que es?????

SImplemente si no quieres devolver nada, pues no pongas 'void'
__________________
www.visitaspirata.com
  #7 (permalink)  
Antiguo 07/06/2010, 16:16
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 10 meses
Puntos: 606
Respuesta: void , que es?????

Cita:
Iniciado por pmike Ver Mensaje
SImplemente si no quieres devolver nada, pues no pongas 'void'
Estas obligado a ponerlo pero no a devolver algo... de ahi que las funciones usen void para indicar que no devuelven nada...
__________________
Aviso: No se resuelven dudas por MP!
  #8 (permalink)  
Antiguo 07/06/2010, 21:30
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 16 años, 5 meses
Puntos: 61
Respuesta: void , que es?????

Cita:
Iniciado por osqar Ver Mensaje
Ahora con la funcion main es un tema particular, vos en tu programa podes declarar void main(int argc, char** argv); sin problemas y tambien podes finalizar esa funcion haciendo return; pero tambien podes declararla como int main y hacer un return 1;.
Esto no es tan exacto: En C++, la funcion main debe retornar int. Es "ilegal" poner void a main, el compilador tiene la obligación de reclamar si pones void a main.
  #9 (permalink)  
Antiguo 09/06/2010, 00:19
 
Fecha de Ingreso: junio-2010
Ubicación: Charlotte, NC
Mensajes: 611
Antigüedad: 14 años, 5 meses
Puntos: 95
Respuesta: void , que es?????

Cuando una función le precede la palabra reservada "void" quiere decir que no regresa ningun valor a la memoria.

En otras palabras,
Cuando creamos una función, el procesador asigna un espacio en la memoria para dicha función.
Al leer el procesador que se trata una función de tipo entero, el procesador, espera un valor entero al final de dicha función.
Por ejemplo:

Código C++:
Ver original
  1. int suma(int a, int b)
  2. {
  3. return a+b;
  4. }

Si llamamos a la función de la siguiente manera:
suma(3,2);
El procesador recibirá 5,
porque estaoms estableciendo return 3+2;
return 5;

Siempre debemos devolver el mismo tipo de dato que estamos utilizando para declarar la función.

También lo podemos ver como un servicio de "renta"

El procesador, le "renta" a nuestro programa un espacio en la memoria para que ponga su función. Cuando nuestro programa termina de utilizar la función, el programa le debe regresar ese espacio al procesador para que se lo pueda asignar a otros programas que lo puedan requerir; Entonces nuestro programa le "paga" al procesador por el espacio rentado, con algo del mismo valor.

Un compilador estandar de C++, asigna a los números enteros (short int o simplemente int) un espacio de 16 bits, proporcionandonos un rango de números enteros (short int) de -32768 a 32767 (2 elevado a la potencia 15)
Al momento de declarar una función de tipo int (como en nuestro ejemplo int suma(int a, int b) ), el procesador, al finalizar nuestra función espera que le regresemos un valor dentro del rango previmanete establecido. Dicho rango varía de acuerdo al tipo de dato que estamos utilizando para nuestra función.


Ahora, si utilizamos la palabra reservada void, antes de la funcion
como:

Código C++:
Ver original
  1. void suma(int a, int b)
  2. {
  3. int sumita = a+b;
  4. std::cout<<sumita<<endl;
  5. }

Notaras la ausencia de la palabra reservada return.
No hay necesidad de regresar ningun valor al compilador. Cuando utilizamos la palabra reservada void para declarar una función, el procesador le sigue presetando ese espacio de memoria a nuestro programa para que almacene su función, pero ya no se la cobra.


Espero que mi explicación haya sido clara :)

Última edición por AlanChavez; 09/06/2010 a las 01:44

Etiquetas: void
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:44.