web-dev-qa-db-fra.com

comment fonctionnent int main () et void main ()

Je suis débutant en langage C. Quelqu'un peut-il expliquer en détail à l'aide d'exemples comment fonctionnent main (), int main (), void main (), main (void), void main (void), int main (void) en langage C? Comme dans ce qui se passe quand on utilise void main () et ce qui se passe quand j'utilise int main () dans un langage simple et ainsi de suite.
Je sais mais je ne comprends pas ce que ça fait:

  1. main () - la fonction n'a pas d'arguments
  2. int main () - la fonction renvoie une valeur int
  3. void main () - la fonction ne renvoie rien, etc.

quand j'écris simple hello world en utilisant int main () return 0, cela me donne toujours la même sortie que lorsque j'utilise void main ()) alors comment ça marche? Quelle est son application?

13
user2106271

main() ou void main() ne sont pas des standards C. La première est autorisée car elle a une valeur de retour implicite int, ce qui la rend identique à int main() . Le but de la valeur de retour de main est de renvoyer un exit status au système d'exploitation.

En C standard, les seules signatures valides pour main sont:

int main(void)

et

int main(int argc, char **argv)

Le formulaire que vous utilisez: int main() est une ancienne déclaration de style qui indique que main prend un nombre non spécifié d'arguments. Ne l'utilisez pas - choisissez l'une de celles ci-dessus.

23
Carl Norum

Si vous voulez vraiment comprendre ANSI C 89, je dois vous corriger en une chose; Dans ANSI C 89, la différence entre les fonctions suivantes:

int main()
int main(void)
int main(int argc, char* argv[])

est:

int main()

  • une fonction qui attend un nombre inconnu d'arguments de types inconnus. Renvoie un entier représentant l'état du logiciel d'application.

int main(void)

  • une fonction qui n'attend aucun argument. Renvoie un entier représentant l'état du logiciel d'application.

int main(int argc, char * argv[])

  • une fonction qui attend l'argc nombre d'arguments et argv [] arguments. Renvoie un entier représentant l'état du logiciel d'application.

À propos de l'utilisation de chacune des fonctions

int main (void)

  • vous devez utiliser cette fonction lorsque votre programme n'a besoin d'aucun paramètre initial pour fonctionner/charger (paramètres reçus du système d'exploitation - hors du programme lui-même).

int main (int argc, char * argv [])

  • vous devez utiliser cette fonction lorsque votre programme a besoin de paramètres initiaux à charger (paramètres reçus du système d'exploitation - hors du programme lui-même).

À propos de void main()

Dans ANSI C 89, lorsque vous utilisez void main Et que vous compilez le projet COMME -ansi -pedantic (Dans Ubuntu, par exemple), vous recevrez un avertissement indiquant que votre fonction principale est de type void et non de type int, mais vous pourrez exécuter le projet. La plupart des développeurs C ont tendance à utiliser int main() sur toutes ses variantes, bien que void main() compile également.

13
Ron Nuni