exit与return的区别

8 篇文章 0 订阅
本文详细介绍了C语言中`return`和`exit`函数在程序退出时的区别。`return`仅用于结束函数并返回值,而`exit`则会结束整个进程,执行清理操作并返回状态给操作系统。在`main`函数中,`return`等同于`exit(0)`,导致程序正常结束,不会执行后续语句。示例代码展示了`return`和`exit`的不同影响,强调了它们在程序控制流中的关键作用。
摘要由CSDN通过智能技术生成

exit(0):正常运行程序并退出程序。
exit(1):非正常运行导致退出程序;
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的现象就很模糊,多数情况下现象都是一致的。
Exit() 是一个函数。
函数名: exit()
所在头文件:stdlib.h
功 能: 关闭所有文件,终止正在执行的进程。
exit(1)表示异常退出.这个1是返回给操作系统的。
exit(x)(x不为0)都表示异常退出
exit(0)表示正常退出
exit()的参数会被传递给一些操作系统,包括UNIX,Linux,和MS DOS,以供其他程序使用。
stdlib.h: void exit(int status);
参 数 : status //程序退出的返回值.

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

进程终⽌的⽅式有8种,前5种为正常终⽌,后三种为异常终⽌:

1 从main函数返回;

2 调⽤exit函数;

3 调⽤_exit或_Exit;

4 最后⼀个线程从启动例程返回;

5 最后⼀个线程调⽤pthread_exit;

6 调⽤abort函数;

7 接到⼀个信号并终⽌;

8 最后⼀个线程对取消请求做出响应。

/*例子一:在调用函数中return 0*/
 
 
#include<stdio.h>
 
int fun()
{
 return 0;//调用return会把返回值返回到函数调用处,但不会使整个进程退出
}
 
 
int main()
{
  fun();
  printf("haha");
  return 0;
 }

运行结果:打印haha

/*例子二:在调用函数中调用exit(0)*/
 
#include<stdio.h>
#include<stlib.h>
 
int fun()
{
 exit(0;//调用exit()导致整个进程退出,整个程序退出
}
 
 
int main()
{
  fun();
  printf("haha");
  return 0;
 }

运行结果:不打印haha

/*例子三:在主函数中return 0*/
 
#include<stdio.h>
#include<stlib.h>
 
int main()
{
  
  
  return 0; //在主函数中调用return 相当于exit(0),主进程退出,不再顺序执行语句
  printf("haha");
 }

运行结果:不打印haha

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值