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 条评论
登录 后参与评论

相关文章

来自专栏刘望舒

Java虚拟机(二)对象的创建与OOP-Klass模型

前言 在前一篇文章中我们学习了Java虚拟机的结构原理与运行时数据区域,那么我们大概知道了Java虚拟机的内存的概况,那么内存中的数据是如何创建和访问的呢?这篇...

21810
来自专栏Brian

Python进阶教程(二)

概述 在上一篇博客中,我们介绍了Python进阶教程(一),还有一些新的技巧没有翻译完,我们下面来继续我们的翻译。 Intermediate Python 中译...

3988
来自专栏Laoqi's Linux运维专列

shell 中的if逻辑判断

3324
来自专栏Pythonista

python中的函数

初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变...

874
来自专栏机器学习和数学

[编程经验]python2和python3的区别总结

最近涨粉涨的厉害啊,那天看刚破800,今天打开又有32个新粉丝,有点开心,哈哈哈。说实话,看的人多的话,是我坚持下去最大的动力。。。 = = = print("...

2714
来自专栏java一日一条

Java 程序优化:字符串操作、基本运算方法等优化策略

字符串对象或者其等价对象 (如 char 数组),在内存中总是占据最大的空间块,因此如何高效地处理字符串,是提高系统整体性能的关键。

441
来自专栏逆向技术

逆向知识第七讲,三目运算符在汇编中的表现形式,以及编译器优化方式

                  逆向知识第七讲,三目运算符在汇编中的表现形式 一丶编译器优化方式 首先说一下编译器优化方式. 1.常量折叠 2.常量传播 3...

1888
来自专栏noteless

[一]class 文件浅析 .class文件格式详解 字段方法属性常量池字段 class文件属性表 数据类型 数据结构

 本文旨在讲解class文件的整体结构信息,阅读本文后应该可以完整的了解class文件的格式以及各个部分的逻辑组成含义

1522
来自专栏noteless

[五] JavaIO之InputStream OutputStream简介 方法列表说明

1042
来自专栏吾爱乐享

short s=1;s=s+1; short s=1;s+=1; 有区别么?? 如果有的话区别是什么?

1293

扫码关注云+社区