C++中变量的作用域和生命周期

#include "iostream.h"
void main()
{
    int m=1,n=2,k=3;
    cout<<"m="<<m<<"n="<<n<<"k="<<k<<endl;
    cout<<"m="<<1<<"n="<<2<<"k="<<3<<endl;
    {
        //重新声明了n值,因此此层中的n相当于一个新的变量,对外层无影响
        int n=4;
        m++;
        k+=4;
        //下面代码块重新声明,其实可以看做独立出来的一部分,不影响其他模块
        {
        //没有声明n值,继续使用上一层的n值
         int m=3,k=3;
         cout<<"m="<<m<<"n="<<n<<"k="<<k<<endl;
         cout<<"m="<<3<<"n="<<4<<"k="<<3<<endl;
        }
        k+=5;
        m-=4;
         cout<<"m="<<m<<"n="<<n<<"k="<<k<<endl;
         cout<<"m="<<-2<<"n="<<4<<"k="<<12<<endl;
    }
    //此处的m,k值继续其内一层的模块值,n为最外层的值,因为上一层中声明了n
    m+=2;
    n++;
    k--;
    cout<<"m="<<m<<"n="<<n<<"k="<<k<<endl;
    cout<<"m="<<3<<"n="<<3<<"k="<<2<<endl;
}

运行结果:

这里写图片描述

通过这道题可以判断下自己的理解,要区分在作用域内是否重定义,如果重定义则相当于一个新的变量来对待,使用作用域内重定义的变量值,并且这个值在脱离作用域后销毁,如果没有重定义,则一直使用其外围作用域范围内的变量及对应的值。也就是说,在括号内部声明的变量相当于不同的变量,占据不同的内存。在内部没有声明变量时,则还是原来的变量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值