• 《C++面向对象程序设计》之变量的生存期


    《C++面向对象程序设计》之变量的生存期

    静态生存期

    (1)全局静态生存期:在函数体外声明,作用域从声明处开始到文件结尾处结束,称其有文件作用域,相当于全局变量 。

    (2)局部静态生存期:在函数体内声明,使用关键字static,块作用域,即其作用域从声明处开始,到快结束的大括号为止。需要注意的是:当多次调用声明的局部静态变量的函数时,其声明只执行一次,并且在多次调用中,体现其静态特性,即在该函数体内,保持其值,第二次调用时,仍在原值得基础上改变。(见下例中fun()函数中的局部静态变量a,b);局部静态变量作用域为块作用域,仔细理解:在下例中,fun()函数和main()函数中定义的局部静态变量a互补干扰。

    动态生存期

    在块作用域中声明,不用static修饰,作用域从声明处开始到命名该标识符的作用域结束处。
    随时创建,随时删除,也叫自动变量(用关键字auto定义,可省略)

    例2-14(宋春花,吕进来主编,人民邮电出版社):

    
    #include "iostream"
    using namespace std;              
    int i = 1;                       //i为全局静态变量
    void fun()
    {
    	static int a=2;                     
    	static int b=0;          //a,b为静态局部变量,具有静态生存期
    	int c=10;                  //c为局部变量,具有动态生存周期
    	a=a+2;
    	i=i+32;
    	c=c+5;
    	cout<<"
    fun()函数:
    ";
    	cout<<"i="<<i<<"a="<<a<<"b="<<b<<"c="<<c<<endl;
    	b=a;
    }
    int main ( )                             
    {
    	static int a=0;             //a为静态局部变量,具有静态生存周期
    	int b=-10;
    	int c=0;                      //b,c为局部变量,动态生存周期
    	cout<<"
    main()函数:
     ";
        cout<<"i="<<i<<"a="<<a<<"b="<<b<<"c="<<c<<endl;
    	c=c+8;
    	fun();
    	cout<<"
    main()函数: 
    ";
    	cout<<"i= "<<i<<"a="<<a<<"b="<<b<<"c="<<c<<endl;
    	i=i+10;
    	fun();
    	return 0;
    }
    
    
    

    输出结果:

  • 相关阅读:
    前端优化
    Git基础使用
    【高可用架构】用Nginx实现负载均衡(三)
    【高可用架构】借助Envoy工具发布项目到多台服务器(二)
    【高可用架构】开发机上部署Deploy项目(一)
    【Linux系列】Centos7安装Samba并将工作区挂载到win(八)
    【Linux系列】Centos 7部署Laravel项目(七)
    【Linux系列】Centos 7安装 Redis(六)
    【Linux系列】Centos 7安装 Mysql8.0(五)
    gitlab服务器搭建
  • 原文地址:https://www.cnblogs.com/HZL2017/p/6764818.html
Copyright © 2020-2023  润新知