关闭

C++ exit 与 return 浅析

标签: returnexit主函数函数进程
888人阅读 评论(0) 收藏 举报
分类:
【摘要】
本文从代码形式,常用方式,相关概念,调用关系和比较分析,这5个维度浅析 exit 与 return 在C++的相同点与区别。


【常见形式】

exit(0):   正常运行程序并退出程序;
exit(1):   非正常运行导致退出程序;
return( ):返回函数,若在主函数中,则会退出函数并返回一值。

【相关概念】
  • return 语句可被用来使正在执行分支程序返回到调用它方法。表示中止当前函数的运行,并将操作权返回给调用者,如果是在main函数中,表示将操作权返回给操作系统。    
如果符合某个条件要退出的话,可以用return返回,否则可以不写这句代码的,当程序执行到“}”时会自动返回,这个问题其实你自己到机器上试一下就知道了。不过作为一个良好的编程习惯,每个函数都有返回语句倒是对的,这样更有可读性,并利于程序的维护 !
return 指令一个是返回一个指定数据给主调函数,另外的一个作用就是 结束 所在函数的执行,return 不是必须要返回一个值。

  • exit()函数用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束。main函数结束时也会隐式地调用exit函数。exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新 所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。

【另】

每个进程都会有一个返回值的,进程开始时是由系统的一个启动函数掉用了main函数的:   
int nMainRetVal = main(); 
当从main函数退出后,启动函数便调用exit函数,并且把nMainRetVa传递给它。所以,任何时候都会调用exit函数的,正常情况下,main函数不会调用exit函数的,而是由return 0; 返回值给nMainRetVal的,exit再接收这个值作为参数的。所以,正常情况下是以exit(0)退出的。
如果,你程序发生异常,你可以在main函数中调用exit(1),强制退出程序,强制终止进程。非0表示不正常退出。

【比较分析】
1、return返回函数值,是关键字;exit是一个函数。
2、return是语言级别的,它表示了调用堆栈的返回;而exit是系统调用级别的,它表示了一个进程的结束。
3、return是函数的退出(返回);exit是进程的退出。
4、return是C语言提供的,exit是操作系统提供的(或者函数库中给出的)。
5、return用于结束一个函数的执行,将函数的执行信息传出个其他调用函数使用;exit函数是退出应用程序,删除进程使用的内存空间,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息,这个信息和机器和操作系统有关,一般是0为正常退出,非0为非正常退出。
6、非主函数中调用return和exit效果很明显,但是在main函数中调用return和exit的现象就很模糊,多数情况下现象都是一致的。
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:428478次
    • 积分:9571
    • 等级:
    • 排名:第1858名
    • 原创:535篇
    • 转载:4篇
    • 译文:0篇
    • 评论:172条