首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"return 0“和"exit (0)”的区别

问"return 0“和"exit (0)”的区别
EN

Stack Overflow用户
提问于 2013-06-30 01:44:49
回答 4查看 55.7K关注 0票数 26

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-06-30 01:46:29

return从函数中退出,而exit从程序中退出。

在main函数中,执行return 0;语句或调用exit(0)函数都会调用已注册的atexit处理程序,从而导致程序终止。

票数 29
EN

Stack Overflow用户

发布于 2013-06-30 01:49:05

在C中,exit 0是一个语法错误。你可以使用exit(0),它是对标准库函数的调用。

函数exit将退出整个程序,并将提供的退出代码返回给操作系统。相反,return语句只退出当前函数,并向调用者提供指定的结果。

只有在main中使用时,它们才相同(因为退出main函数将终止程序)。

通常情况下,exit只在紧急情况下使用,因为没有合理的方法继续执行,所以需要终止程序。例如:

代码语言:javascript
复制
//
// 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指针)。

票数 12
EN

Stack Overflow用户

发布于 2013-06-30 01:47:09

是的,因为没有名为exit的语句。我猜你指的是函数exit

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

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17383015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档