Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: GROV en 8 Abril 2012, 01:53 am



Título: Duda con main()
Publicado por: GROV en 8 Abril 2012, 01:53 am
Que tal a todos, bueno verán he tenido una gran duda desde que me inicie a programar en C, y es acerca de la función main(), verán me he encontrado en diferentes libros varias maneras diferentes de escribir la función main(), y realmente estoy algo confundido de cual es la manera correcta de escribirla.

La más básica que me he topado es:

Código:
main()
{
     /* Aquí va el código */
}

donde el main() va solito.

Otra es:

Código:
void main(void)
{
    /* Aquí va el código */
}

La que yo utilizo es la siguiente:

Código:
int main(void)
{
    /* Aquí va el código */
}
Esta es la que uso ya que es la que me dijo mi profesor de programación, que como main es una función se debe especificar el tipo de dato que regresa, y al poner el void como parámetro, quiere decir que no va a regresar ningún valor, por eso se puede omitir el return 0;

Y buscando código por internet me encontrado con:

Código:
main ()
{
    /* Aquí va el código */
}

Código:
int main()
{
    /* Aquí va el código */

    return 0;
}

Y hay más variantes todavía, pero me gustaría saber cual es realmente la manera correcta de escribir la función, cuando se utiliza el return 0;, cuando se pone como parámetro el void, cuando no, y esas cosas.

Saludos afectuosos!!



Título: Re: Duda con main()
Publicado por: Beakman en 8 Abril 2012, 02:01 am
Depende del compilador que estés usando. Igual la forma correcta siempre termina siendo:
Código
  1. int main( int argc, char **argv ){
  2.     // código
  3.     return 0;
  4. }

Porque es bueno tener un control del programa que se está desarrollando. Es decir, un programa que no retorne ningún valor es un programa que no puede decirme si las cosas terminaron bien o mal.
Y el uso de parámetros me da la posibilidad de llamar a dicho programa pasándole valores.
Código:
./calculadora valor1 valor2 valor3
En este caso:
- argc = 4
- argv = un vector con el nombre del programa( en este caso "calculadora" ) y los valores que le pasé.

Es muchísimo más completo un programa de esta forma, y siempre debería recibir y retornar valores.