C++ exit 与 return 浅析
来源:互联网 发布:最后生还者 巴黎 知乎 编辑:程序博客网 时间:2024/06/07 01:29
【摘要】
【相关概念】
【比较分析】
本文从代码形式,常用方式,相关概念,调用关系和比较分析,这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
- C++ exit 与 return 浅析
- c 中 exit 与 return 的区别
- C语言中的exit与return
- C语言之return与exit
- exit(),_exit()与return的比较与浅析
- C语言 exit 0;与exit 1;return 0;return1
- return 与 exit
- return与exit()
- return,exit() 与errno;
- exit与return区别
- exit与return
- exit 与 return
- exit与return区别
- exit与return区别
- C语言中return与 exit的区别
- c语言中return与exit的区别
- C语言中return,exit,和break 联系与区别
- linux c中return 与exit的区别
- Ubuntu/Debian上安装Node.js和npm
- 高光BRDF化简公式总结(转)
- 设计模式读书笔记:Adapter Class/Object(适配器)
- 百度地图 引擎初始化失败
- INSTALL_PARSE_FAILED_NO_CERTIFICATES 解决办法
- C++ exit 与 return 浅析
- struts2学习笔记(5)---自定义拦截器
- hadoop2 namonode为HA 得到hadoop的active namenode具体地址代码
- C语言实现封装、继承和多态
- performSelector 那点事
- 算法二:深度和广度优先搜索
- Java中的String,StringBuffer,StringBuilder的区别
- Nginx 负载均衡配置和策略
- iOS:字符串过滤掉非法字符