“返回0”和“退出(0)”之间的区别

时间:2013-06-29 17:44:49

标签: c function

在函数中使用时,return 0exit (0)之间是否有任何区别? 如果是,我何时应该在函数中使用return 0exit (0)

4 个答案:

答案 0 :(得分:22)

return退出程序时,

exit退出该函数。

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

答案 1 :(得分:10)

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,您可能希望在现场退出程序而不是返回{ {1}}错误代码(例如c指针)如果没有编写代码来处理分配失败。

答案 2 :(得分:8)

是的,因为没有名为exit的陈述。我想你的意思是功能 exit

在这种情况下,存在差异:exit函数退出进程,换句话说,程序终止。 return 语句只是从当前函数返回。

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

答案 3 :(得分:0)

  • return是一个将控制权返回给调用的语句 功能
  • exit是一个系统调用,它终止当前进程,即 目前正在执行计划。

main()中,return 0;exit(0);执行相同的操作。

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