在函数中使用return 0
和使用时有什么区别吗?exit (0)
如果是,我应该何时使用return 0
或exit (0)
在函数中使用?
问问题
56483 次
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 回答