zoukankan      html  css  js  c++  java
  • 2)main函数在执行前和执行后有哪些操作

    main函数执行之前,主要就是初始化系统相关资源
         1. 设置栈指针
         2. 初始化static静态和global全局变量,即data段的内容
         3. 将未初始化部分的全局变量赋初值:数值型short,int,long等为0,bool为FALSE,指针为NULL,等等,即.bss段的内容     
         4. 全局对象初始化,在main之前调用构造函数
         5. 将main函数的参数,argc,argv等传递给main函数,然后才真正运行main函数

    main函数执行之后:
         1. 全局对象的析构函数会在main函数之后执行; 
         2. 可以用_onexit 注册一个函数,它会在main 之后执行; 

    如果你需要加入一段在main退出后执行的代码,可以使用onexit()函数,注册一个函数。 
     
            #include <stdlib.h>
            #include 
    <stdio.h>
        
            
    int atexit(void (*function")(void));
            
    void fn1( void ), fn2( void ), fn3( void );
                             
            
    int main( void ){
                onexit( fn1 );
                onexit( fn2 );
                
    printf"This is executed first." );
            }
            
            
    void fn1(){
                
    printf" This is" );
            }
            
    void fn2(){
                
    printf" executed next." );
            }
    结果:
    This is executed first.
    This is executed next. 
     
  • 相关阅读:
    SQL Server 2000 JDBC驱动的完整安装及测试说明
    Google 免费:搜索本站内容
    阳光下旅行
    佛说五百年的回眸才换来今生的擦肩而过
    在程序中调用“数据链接属性”对话框,产生连接字符串
    ╭☆难以割舍^_^就是牵挂☆╮
    java打包详解
    .NET 自定义实体类简介
    C#中方法的参数有四种类型
    DataSet操作数据库
  • 原文地址:https://www.cnblogs.com/weilf/p/4157213.html
Copyright © 2011-2022 走看看