Есть ли разница между return 0 и exit (0) при использовании в функции?
Если да, когда следует использовать return 0 или exit (0) в функции?
Разница между "return 0" и "exit (0)"
Ответ 1
return выходит из функции, а exit выходит из программы.
В main функция, выполняющая оператор return 0; или вызывающая функция exit(0), вызовет зарегистрированные обработчики atexit и вызовет завершение программы.
Ответ 2
exit 0 является синтаксической ошибкой в C. Вы можете иметь exit(0), а не вызов стандартной библиотечной функции.
Функция exit закроет всю программу, возвращая предоставленный код выхода в ОС. Оператор return вместо этого закрывает текущую функцию, предоставляя вызывающему пользователю указанный результат.
Они одинаковы только при использовании в main (поскольку выход из функции main завершает программу).
Обычно exit используется только в экстренных случаях, когда вы хотите завершить программу, потому что нет разумного способа продолжить выполнение. Например:
//
// Ensure allocation of `size` bytes (will never return
// a NULL pointer to the caller).
//
// Too good to be true? Here 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;
}
В этом случае, если функция a вызывает функцию b, которая вызывает функцию c, которая вызывает my_malloc, вы можете отказаться от программы на месте вместо возврата к c кода ошибки (например, NULL), если код не написан для обработки отказов выделения.
Ответ 3
Да, есть, поскольку нет выражения, называемого exit. Я предполагаю, что вы имеете в виду функцию exit?
В этом случае существует большая разница: функция exit завершает процесс, другими словами, программа завершается. Оператор return просто возвращает из текущей функции.
Они похожи только при использовании в main.
Ответ 4
-
return- это оператор, возвращающий управление обратно вызывающему функция. -
exit- системный вызов, который завершает текущий процесс, т.е. в настоящее время выполняется программа.
В main() выполняются те же return 0; и exit(0);.
ПРИМЕЧАНИЕ: вы должны включить #include<stdlib.h>.