zoukankan      html  css  js  c++  java
  • 《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;
    }
    
    
    

    输出结果:

  • 相关阅读:
    每日一题 为了工作 2020 0412 第四十一题
    每日一题 为了工作 2020 04011 第四十题
    每日一题 为了工作 2020 0410 第三十九题
    每日一题 为了工作 2020 0409 第三十八题
    每日一题 为了工作 2020 0408 第三十七题
    每日一题 为了工作 2020 0407 第三十六题
    每日一题 为了工作 2020 0406 第三十五题
    每日一题 为了工作 2020 0405 第三十四题
    学习总结(二十四)
    学习总结(二十三)
  • 原文地址:https://www.cnblogs.com/HZL2017/p/6764818.html
Copyright © 2011-2022 走看看