26

在函数中使用return 0和使用时有什么区别吗?exit (0)如果是,我应该何时使用return 0exit (0)在函数中使用?

4

4 回答 4

30

return在退出程序的同时退出函数exit

main函数中执行return 0;语句或调用exit(0)函数将调用注册的atexit处理程序并导致程序终止。

于 2013-06-29T17:46:28.820 回答
12

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'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;
}

在这种情况下,如果函数a调用函数b调用调用函数的函数c,如果代码不是为了处理分配失败而编写的,safe_malloc您可能希望当场退出程序而不是返回c错误代码(例如指针)。NULL

于 2013-06-29T17:49:05.187 回答
8

是的,因为没有称为exit. 我猜你的意思是功能 exit

在这种情况下,有一个很大的区别:exit函数退出进程,换句话说,程序终止。该return 语句只是从当前函数返回。

它们只有在main函数中使用时才相似。

于 2013-06-29T17:47:08.997 回答
0
  • return是将控制权返回给调用函数的语句。
  • exit是一个系统调用,它终止当前进程,即当前正在执行的程序。

main()和执行同样的事情return 0;exit(0);

注意:您必须包括#include<stdlib.h>.

于 2013-06-29T17:49:53.143 回答