您的位置:首页 > 编程语言 > C语言/C++

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

2016-12-13 22:14 330 查看
#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;
}


运行结果:



通过这道题可以判断下自己的理解,要区分在作用域内是否重定义,如果重定义则相当于一个新的变量来对待,使用作用域内重定义的变量值,并且这个值在脱离作用域后销毁,如果没有重定义,则一直使用其外围作用域范围内的变量及对应的值。也就是说,在括号内部声明的变量相当于不同的变量,占据不同的内存。在内部没有声明变量时,则还是原来的变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  作用域 声明周期