c语言exit函数的作用,计算中心

在C语言中,经常会遇到使用exit函数直接结束程序运行的情况,exit和return的作用有些类似,特别是在main函数中出现时,经常令人迷惑:是该用exit还是return?或是随便用哪一个都行?二者到底有何区别?

1.exit用于在程序运行的过程中随时结束、终止程序,exit的参数是返回给OS的。main函数结束时(使用return或exit)也会隐式(即自动)地调用exit函数。

exit函数运行时首先会执行由atexit()函数登记的函数,然后会做一些自身的清理工作,同时刷新所有输出流、关闭所有打开的流并且关闭通过标准I/O函数tmpfile()创建的临时文件。

exit是结束一个进程,它将删除进程使用的内存空间,同时把错误信息返回父进程,而return是返回函数值(可选,void类型的函数只return而不带值)并退出函数。

2.return是语言级别的,它表示了调用堆栈的返回,即返回主调函数;而exit是系统调用级别的,它表示了一个进程的结束。

3.exit的函数原型为“void exit( int status );”,其作用是退出应用程序,并将应用程序的一个状态返回给OS,这个状态标识了应用程序的一些运行信息:和机器和操作系统有关一般是 0 为正常退出、非0为非正常退出且不同的取值表示不同的退出原因(具体含义用程序设计者确定并在程序的使用手册中说明)。

4.atexit()函数的参数是一个函数指针,函数指针指向一个没有参数也没有返回值的函数。atexit()的函数原型是:“int atexit( void (*func)(void) );”。在一个程序中最多可以用atexit()注册32个处理函数,这些处理函数的调用顺序与其注册的顺序相反,也即最先注册的最后调用,最后注册的最先调用。

一般程序执行到 main() 的结束就完成了, 如果想让程序在结束时做一些统一的事情(自己安排的收尾工作), 可以尝试着用以下的例子去看看效果:

#include 

#include 

void f1(void) { printf("exit f1\n"); }

void f2(void) { printf("exit f2\n"); }

int main(void)

{

atexit(f1); atexit(f2);  printf("exit main\n");

return 0;

}

5.在main函数里面return(0)和exit(0)的作用是一样的。在main函数中我们通常使用“return (0);”这样的方式返回一个值,但这是限定在非“void main()”这样的形式。

exit()通常是用在子程序(函数)中用来终结程序用的(发生了程序认为无法继续运行下去的情况,程序设计者认为此时应当终止程序运行,此时只能使用exit,因为使用retrurn的结果是返回主调函数,达不到终止程序运行的目的),使用exit后程序自动结束并返回操作系统。

把exit用在main函数内的时候,无论main是否定义成void返回的值都是有效的,并且exit不需要考虑类型,exit(1)等价于return (1)。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值