C++中_onexit()用法简述

引问:main 主函数执行完毕后,是否可能会再执行一段代码?

答案:可以,可以用_onexit 注册一个函数,它会在main 之后执行。

知识了解:

(1)使用格式:_onexit(int fun()) ,其中函数fun()必须是带有int类型返回值的无参数函数;

(2)_onexit() 包含在头文件cstdlib中,cstdlib为c语言中的库函数;

(3)无论函数_onexit() 放到main中任意位置,它都是最后执行。

程序举例分析:

#include 
 #include 
 using namespace std;

 int func1(),func2(),func3();

 int main(int argc,char * argv[]){
_onexit(func2);
 _onexit(func1); //在此处不断排列组合三条语句的执行顺序
 _onexit(func3);
 cout<<"First Line"< cout<<"Second Line"<}

 int func1()
 {
 cout<<"fun1() executed!"< return 0;
 }

 int func2()
 {
 cout<<"fun2() executed!"< return 0;
 }
 int func3()
 {
 cout<<"fun3() executed!"< return 0;
 }

根据多次重新排列组合 _onexit(func2); _onexit(func1); _onexit(func3);的执行顺序可知:_onexit()在main()中越靠后,则其执行顺序越靠前;即越在前面的就越延后执行,有点类似‘栈’(先进后出)的特点。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大壮

UIKit框架 - TextKit

1694
来自专栏编程

这或许是对小白最友好的python入门了吧——9,数字深入体验

先给大家介绍一个函数:range(),这个函数是用来干嘛的呢?很简单,数数的,怎么数呢,我先给大家演示一下: for num in range(1,5): ...

1899
来自专栏小詹同学

Leetcode打卡 | No.010 正则表达式匹配

欢迎和小詹一起定期刷leetcode,每周一和周五更新一题,每一题都吃透,欢迎一题多解,寻找最优解!这个记录帖哪怕只有一个读者,小詹也会坚持刷下去的!

954
来自专栏hbbliyong

C#神奇的扩展方法

以前总听说扩展方法扩展方法,只是听说是C#3.0后出来的新玩意,也仅仅是知道Linq中用到好多的扩展方法,但是他究竟是个什么东东,怎么用它,用它的好处是什么...

2465
来自专栏用户画像

JAVA反射机制

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对...

541
来自专栏TungHsu

这或许是对小白最友好的python入门了吧——9,数字深入体验

先给大家介绍一个函数:range(),这个函数是用来干嘛的呢?很简单,数数的,怎么数呢,我先给大家演示一下: for num in range(1,5): ...

3358
来自专栏企鹅号快讯

30分钟学会用Python编写简单程序

参与文末每日话题讨论,赠送异步新书 异步图书君 学习目标 知道有序的软件开发过程的步骤。 了解遵循输入、处理、输出(IPO)模式的程序,并能够以简单的方式修改它...

28310
来自专栏前端说吧

Sass-学习笔记【基础篇】

3354
来自专栏九彩拼盘的叨叨叨

学习纲要:ES6系列:箭头函数和对象方法简写

732
来自专栏Python小屋

Python使用超高效算法查找所有类似123-45-67+89=100的组合

问题描述:在123456789这9个数字中间插入任意多个+和-的组合,使得表达式的值为100,输出所有符合条件的表达式。 昨天发了一个暴力测试的方法来解决问题,...

2775

扫描关注云+社区