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;
    }
    
    
    

    输出结果:

  • 相关阅读:
    【转】你刚才在淘宝上买了一件东西【技术普及贴】
    Hibernate使用自定义脚本替换注解或者xml文件中的自动生成表结构
    北京地铁和广州地铁之感想
    使用eclipse开发工具与hibernate开发者为开源一起做贡献
    hdu 1159 Common Subsequence(最长公共子序列LCS)
    题解报告:hdu 2059 龟兔赛跑
    循环顺序队列模拟病人看病程序
    题解报告:hdu 1060 Leftmost Digit
    ACM_求N^N的最高位数
    ACM_Encoding
  • 原文地址:https://www.cnblogs.com/HZL2017/p/6764818.html
Copyright © 2011-2022 走看看