Y a-t-il une différence entre return 0
Et exit (0)
lors de l'utilisation dans une fonction? Si oui, quand dois-je utiliser return 0
Ou exit (0)
dans une fonction?
return
quitte la fonction tandis que exit
quitte le programme.
Dans la fonction main
, l'exécution de l'instruction return 0;
Ou l'appel de la fonction exit(0)
appellera les gestionnaires atexit
enregistrés et entraînera l'arrêt du programme.
exit 0
Est une erreur de syntaxe en C. Vous pouvez avoir exit(0)
qui est à la place un appel à une fonction de bibliothèque standard.
La fonction exit
quittera le programme entier, renvoyant le code de sortie fourni au système d'exploitation. L'instruction return
quitte uniquement la fonction actuelle, donnant à l'appelant le résultat spécifié.
Ils sont les mêmes que lorsqu'ils sont utilisés dans main
(car quitter la fonction main
mettra fin au programme).
Normalement, exit
n'est utilisé que dans les cas d'urgence où vous souhaitez mettre fin au programme car il n'existe aucun moyen raisonnable de poursuivre l'exécution. Par exemple:
//
// Ensure allocation of `size` bytes (will never return
// a NULL pointer to the caller).
//
// Too good to be true? Here's the catch: in case of memory
// exhaustion the function will not return **at all** :-)
//
void *safe_malloc(int size) {
void *p = malloc(size);
if (!p) {
fprintf(stderr, "Out of memory: quitting\n");
exit(1);
}
return p;
}
Dans ce cas, si la fonction a
appelle la fonction b
qui appelle la fonction c
qui appelle safe_malloc
, Vous voudrez peut-être quitter le programme sur place au lieu de revenir à c
un code d'erreur (par exemple un pointeur NULL
) si le code n'est pas écrit pour gérer les échecs d'allocation.
Oui, car il n'y a pas de déclaration appelée exit
. Je suppose que vous voulez dire la fonction exit
?
Dans ce cas, il y a une grande différence : la fonction exit
quitte le processus, en d'autres termes le programme est terminé. L'instruction return
revient simplement de la fonction courante.
Ils ne sont similaires que s'ils sont utilisés dans la fonction main
.
return
est une instruction qui renvoie le contrôle à la fonction appelante.exit
est un appel système qui met fin au processus en cours, c'est-à-dire au programme en cours d'exécution.Dans main()
les return 0;
Et exit(0);
effectuent la même chose.
REMARQUE: vous devez inclure #include<stdlib.h>
.