C 区别于;返回0“;及;出口(0)";
在函数中使用时,C 区别于;返回0“;及;出口(0)";,c,function,C,Function,在函数中使用时,返回0和退出(0)之间有什么区别吗? 如果是,我应该在函数中何时使用返回0或退出(0) return退出函数,而exit退出程序 在main函数中执行返回0语句或调用exit(0)函数将调用注册的atexit处理程序并导致程序终止。是的,因为没有调用exit的语句。我猜你指的是函数 在这种情况下,有一个很大的区别:exit函数退出进程,换句话说,程序被终止。return语句只是从当前函数返回 它们只有在main函数中使用时才类似。退出0是C语言中的语法错误。您可以使用退出(0)来
返回0
和退出(0)
之间有什么区别吗?
如果是,我应该在函数中何时使用
返回0
或退出(0)
return
退出函数,而exit
退出程序
在
main
函数中执行返回0代码>语句或调用exit(0)
函数将调用注册的atexit
处理程序并导致程序终止。是的,因为没有调用exit
的语句。我猜你指的是函数
在这种情况下,有一个很大的区别:exit
函数退出进程,换句话说,程序被终止。return
语句只是从当前函数返回
它们只有在main
函数中使用时才类似。退出0
是C语言中的语法错误。您可以使用退出(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\u malloc
,您可能希望立即退出程序,而不是返回到c
错误代码(例如aNULL
指针),如果该代码不是为处理分配失败而编写的。
return
是将控制权返回给调用方的语句
功能
exit
是一个系统调用,它终止当前进程,即
当前正在执行的程序
在main()中返回0代码>和退出(0)代码>执行相同的操作
注意:您必须包括#包括退出0?可能没有编译。退出(0)退出您的程序。你可能不想这样,抱歉。我已经编辑了这个问题。这里有一篇类似的帖子,不知道为什么人们在return不是函数的情况下使用return(x)。看@Arthur“try it”通常是完全理解C语言的一种不好的方式,我认为这就是其中之一。关于这个问题,即使在main
中,它们也是不同的,请看注释。atexit
处理程序也会在从main返回时被调用。@CarlNorum感谢您的更正,我更新了我的答案。“一些编译器甚至接受并编译代码,即使您不写返回0”,因为这是标准的。