一. 不从面向对象角度 1
1.exit是结束当前的进程,无论你在那里去调用它.
2.return是跳出当前的函数.
举例说明:
Example with return:
#include <stdio.h>
void f(){
printf("Executing f\n");
return;
}
int main(){
f();
printf("Back from f\n");
}
If you execute this program it prints:
Executing f
Back from f
Another example for exit():
#include <stdio.h>
#include <stdlib.h>//exit needs it
void f(){
printf("Executing f\n");
exit(0);
}
int main(){
f();
printf("Back from f\n");
}
If you execute this program it prints:
Executing f
可以看出来,f函数中调用完exit函数后,程序直接就结束了,不会再回到main函数中.而return在执行完f函数后,还会回到main函数中.
exit适用的场景:
直接结束当前进程,而不需要进行异常处理的情况,比如我们经常看到linux中多线程的例子中,函数中经常用exit来退出程序.(例子)
exit不适合的场景:
不适合直接用在库函数中,因为一旦执行到exit语句,调用者的程序也会结束掉(因为两者都在一个进程中).这会把库的使用者给干懵,这种情况更适合返回错误码的方式.
二.从面向对象角度 2
在C++中,使用return会调用析构函数,而使用exit不会调用析构函数.
注意,对于静态对象,调用exit也会调用析构函数;而调用abort函数,则本地对象,静态对象,全局对象他们的析构函数都不会被调用.