C++ exit 与 return 浅析

原创 2015年07月07日 17:35:58
【摘要】
本文从代码形式,常用方式,相关概念,调用关系和比较分析,这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的现象就很模糊,多数情况下现象都是一致的。

c语言中return,和exit的区别

exit用于在程序运行的过程中随时结束程序,exit的参数是返回给OS的。main函数结束时也会隐式地调用exit函数。 exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自...
  • qq_21792169
  • qq_21792169
  • 2016年01月02日 20:50
  • 13493

C语言之循环结构中break、continue、goto、return和exit的区别

转载出处:http://blog.csdn.net/u012917700/article/details/49885667 循环结构中break、continue、goto、return和e...
  • sdkdlwk
  • sdkdlwk
  • 2017年03月24日 15:31
  • 1422

exit函数和_exit函数的区别

高级I/O函数在Linux标准库中,有一套称为高级I/O函数,例如我们所熟知的printf,fopen,fread,fwrite都在此列,他们也被称为缓冲I/O。其特征是对应每一个打开的文件,都存在一...
  • bit_clearoff
  • bit_clearoff
  • 2017年01月14日 10:51
  • 1405

C++小技巧emun namespace 指针*、&(在函数里做参数) exit与return Win32宏定义 双等号代表意义

1.在编程的时候应当少用define来进行宏定义,应当尽量使用enum,其中主要是应为enum是类型安全的;二其是在预编译之后其左右的,这就有利于调试,例子:   a.类型安全:    其中enum的...
  • yangdashi888
  • yangdashi888
  • 2016年08月23日 14:55
  • 479

C/C++语言函数学习(1):atexit、exit、return

/*stdlib.h *void exit(int status); *功 能:终止程序 *int atexit(void (*func)(void)); *功 能: 注册终止函数,在ma...
  • callinglove
  • callinglove
  • 2012年10月20日 23:07
  • 1328

C++:Windows下return,exit和ExitProcess的区别和分析

转自:http://www.cnblogs.com/jcss2008/archive/2009/03/18/1415519.html通常,我们为了使自己的程序结束,会在主函数中使用return或调用e...
  • wangyanguiyiyang
  • wangyanguiyiyang
  • 2017年06月28日 10:04
  • 493

【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;

Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢。          原文地址:http://blog.csdn.net/xiaominghimi/article/detai...
  • Jerke
  • Jerke
  • 2012年02月21日 15:46
  • 260

【iOS-Cocos2d游戏开发之十二】浅析使用C++/C/OC进行iOS游戏混编出现“failed with exit”问题与小结;

李华明Himi 原创,转载务必在明显处注明:转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/478.html     大家都...
  • xiaominghimi
  • xiaominghimi
  • 2011年09月15日 19:52
  • 8798

delphi exit类似C return

  • 2014年09月04日 12:30
  • 29KB
  • 下载

exit和abort及return的区别

  • 2013年08月29日 16:21
  • 233KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C++ exit 与 return 浅析
举报原因:
原因补充:

(最多只允许输入30个字)