《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<<"\nfun()函数:\n";
    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<<"\nmain()函数:\n ";
    cout<<"i="<<i<<"a="<<a<<"b="<<b<<"c="<<c<<endl;
    c=c+8;
    fun();
    cout<<"\nmain()函数: \n";
    cout<<"i= "<<i<<"a="<<a<<"b="<<b<<"c="<<c<<endl;
    i=i+10;
    fun();
    return 0;
}

输出结果:

1115880-20170425215123600-941984981.jpg

转载于:https://www.cnblogs.com/HZL2017/p/6764818.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值