文章目录

  • exit()函数介绍
  • exit()和return的区别
  • 测试1
  • 测试2

exit()函数介绍

函数名: exit()
所在头文件:stdlib.h(如果是c++,头文件:#include < cstdlib >)
功 能: 关闭所有文件,终止正在执行的进程
exit(0)表示正常退出,
exit(x)(x不为0)都表示异常退出,这个x是返回给操作系统(包括UNIX,Linux,和MS DOS)的,以供其他程序使用。
stdlib.h: void exit(int status);//参 数status,程序退出的返回值

exit()和return的区别

如果main()在一个递归程序中,exit()仍然会终止程序;
但return将控制权移交给递归的前一级,直到最初的那一级,此时return才会终止程序。
即使在除main()之外的函数中调用exit(),它也将终止程序。
return();是某个函数的结束,并返回结果。

  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

#include<stdlib.h>
#include<stdio.h>
#include <string.h>
int main(int argc,char*argv[])
{int status;printf("Enter either 1 or 2\n");status=getchar();exit(status-'0');printf("this line is never reached\n");return 0;
}


调用exit()函数退出时,printf(“this line is never reached\n”);和return 0;和两句都不会执行。

测试2

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int output( )
{int a[10];ofstream outfile("f1.dat",ios::out);//定义文件流对象,打开磁盘文件"f1.dat"if(!outfile)                        //如果打开失败,outfile返回值{cerr<<"open error!"<<endl;exit(1);}cout<<"enter 10 integer numbers:"<<endl;for(int i=0;i<10;i++){cin>>a[i];outfile<<a[i]<<" ";}            //向磁盘文件"f1.dat"输出数据outfile.close();                   //关闭磁盘文件"f1.dat"return 0;
}int main(){output();cout<<"end!"<<endl;return 0;
}


未进入exit(1) 分支,正常执行end!
把if(!outfile)修改为if(outfile),让程序估计进入exit(1)分支

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
int output( )
{int a[10];ofstream outfile("f1.dat",ios::out);//定义文件流对象,打开磁盘文件"f1.dat"if(outfile)                        //如果打开失败,outfile返回值{cerr<<"open error!"<<endl;exit(1);}cout<<"enter 10 integer numbers:"<<endl;for(int i=0;i<10;i++){cin>>a[i];outfile<<a[i]<<" ";}            //向磁盘文件"f1.dat"输出数据outfile.close();                   //关闭磁盘文件"f1.dat"return 0;
}int main(){output();cout<<"end!"<<endl;return 0;
}


执行exit(1)函数后,整个程序直接结束,exit(1)后面的代码都不会执行,output()子函数也不会执行返回,main函数后面的语句cout<<“end!”<<endl;也不会执行。和return不一样。

exit()函数解析相关推荐

  1. SystemInit()时钟系统初始化函数解析

    SystemInit()时钟系统初始化函数 SystemInit() 函数在 system_stm32f10x.h头文件中可以看到函数声明,函数实现是在system_stm32f10x.c源文件中 S ...

  2. linux程序卸载动态库,Intel平台下linux中ELF文件动态链接的加载、解析及实例分析(二): 函数解析与卸载...

    在 IBM Bluemix 云平台上开发并部署您的下一个应用. 相信读者已经看过了 Intel平台下Linux中ELF文件动态链接的加载.解析及实例分析(一): 加载的内容了,了解了ELF文件被加载的 ...

  3. exit在c语言里的作用,C语言中exit函数的使用

    exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束 return() 是当前函数返回,当然如果是在主函数main, 自然也就结束当前进程了,如果不是,那就是退回上一层调 ...

  4. C++ 笔记(34)— C++ exit 函数

    当遇到 main 函数中的 return 语句时,C++ 程序将停止执行.但其他函数结束时,程序并不会停止.程序的控制将返回到函数调用之后的位置.然而,有时候会出现一些非常少见的情况,使得程序有必要在 ...

  5. objective-c abort() 与 exit() 函数的区别

    exit()函数 调用exit会让用户感觉程序崩溃了,不会有按Home键返回时的平滑过渡和动画效果:另外,使用exit可能会丢失数据,因为调用exit并不会调用-applicationWillTerm ...

  6. oracle rpad mysql_Oracle生成不重复票号与LPAD,RPAD与NEXTVAL函数解析

    SELECT TO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0') AS RES_ORDER_NO FROM DUAL 该语句拼接 时间 与 ...

  7. json数据解析_VBA 实践指南 -- Split函数解析Json数据

    什么是JSON? JSON(JavaScript Object Notation) 是一种及其轻量级的数据交换格式,它是 ECMAScript (欧洲计算机协会制定的JavaScript规范)的一个子 ...

  8. C/C++ sizeof函数解析——解决sizeof求结构体大小的问题

    C/C++ sizeof函数解析--解决sizeof求结构体大小的问题 参考文章: (1)C/C++ sizeof函数解析--解决sizeof求结构体大小的问题 (2)https://www.cnbl ...

  9. exit函数_全面深入了解 Python 魔法函数

    (点击上方公众号,可快速关注一起学Python) 作者:浪子燕青       链接: http://www.langzi.fun/Python魔法函数.html 魔法函数概念 魔法函数是以双下划线开头 ...

最新文章

  1. js 闭包的用法详解
  2. Gym-101466K Random Numbers(线段树,数学,唯一分解定理)
  3. python request url 转义_Python多线程抓取Google搜索链接网页
  4. moment 24小时与12小时区别
  5. Apollo进阶课程 ③ | 开源模块讲解(中)
  6. 需求、需求工程与需求工程师 — 1.定义、作用
  7. phpcms 报500错误
  8. Telnet 服务器软件的安装
  9. UI自动化测试篇 :Selenium2(Webdriver)TestNG自动化测试环境搭建
  10. FreeSWITCH mod_callcenter 整理
  11. 经典Hello Word窗口表示,可视化编程入门。
  12. python提取国家名称缩写_如何从python中的国家缩写中获取国家名称,并混合使用alpha_2和alpha_3 ccodes...
  13. python凹多边形分割_凹多边形分割成凸多边形
  14. 移动端webscoket连接失败---code1006
  15. linux去除快捷方式箭头,焦点去除Win8快捷方式箭头软件
  16. 题解 - HDU 6638 Snowy Smile (线段树)
  17. Day03 开始学Response
  18. Linux增加root目录容量,Linux(manjaro)增加根目录磁盘空间
  19. XHR>>name不显示sug
  20. 基音周期检测acf算法及matlab仿真,基音周期检测算法研究及在语音合成中的应用...

热门文章

  1. 关于Linux中自动化配置服务和网络接口的一些笔记
  2. android开发 给app设置应用白名单 即省电策略设置为无限制(小米,华为亲测有效)
  3. ATT iPhone手机激活系统超负荷引发故障
  4. BST(三): del
  5. 街机三国志隐藏人物刘备_隐藏的人物
  6. Servlet终极保姆级入门指南
  7. 三、javase中类、对象相关概念
  8. FTP服务器配置工作任务-winserver4
  9. 20100913武汉归来
  10. 中国建筑垃圾处理产业投资规划及未来发展预测报告2022-2028年