c++入门 作用域和块 全局变量、局部变量

作用域和块

现实中,凡事都有自己的适用范围,计算机语言中,变量也都有自己的作用域(Scope),所谓作用域,就是变量的可见范围,在某个作用域中定义了变量之后,我们可以使用、访问这个变量,但是出了这个作用域之后我们就无法使用这个变量了,

程序的作用域是自顶向下定义的,在最上级首先由一个全局作用域(Global Scope),全局作用域的变量可以在文件中的所有地方被访问,他也叫做全局变量(Global Variable),而其他非全局变量就叫做局部变量(Local Variable);而在其下,我们会用( {} )定义一个个的块( Block ),每个块都定义了一个层的作用域,而块中又能嵌套块,于是就有了层级的作用域结构。

基本作用域示例:

#include<iostream>
using namespace std;
//全局变量

int num = 3 ; //全局变量 num

int main()
{
        cout << "num的值为:" <<num << endl;
        int num = 2 ; //局部变量num
        cout << "num的值为:" << num <<endl;
        return 0;
}

输出结果为:
在这里插入图片描述
示例中,我们先声明了一个全局变量 num= 3,并在main函数中打印,而当我们在main函数中声明另一个同名局部变量后,打印出来的局部变量就变成了局部变量的2,可以说局部变量的生命周期是从定义到所在代码结束的这段代码,而内层的局部变量会屏蔽外层的同名变量,函数虽然不完全是一种块,但在代码分析中一般级别会高于块,我们也可以将花括号当中的内容看成块,而其中定义的也是局部变量。

除了函数自带的定义域外,我们也可以用{} 来自己定义一个块

#include<iostream>
using namespace std;
//
//块与作用域

int main()
{
	int layer = 1 ;
	cout << "layer的值为:" << layer << endl;
	{
		cout << "layer的值为:" << layer << endl;
		int layer = 2 ;
		cout << "layer的值为:" << layer << endl;
		{
			cout << "layer的值为:" << layer << endl;
			int layer = 3 ;
			cout << "layer的值为:" << layer << endl;
		}
		cout << "layer的值为:" << layer << endl;
		{
			cout << "layer的值为:" << layer << endl;
			int layer = 3 ;
			cout << "layer的值为:" << layer << endl;
		}
		cout << "layer的值为:" << layer << endl;
	}
	cout << "layer的值为:" << layer << endl;
	return 0 ;
}

**输出结果为: **
在这里插入图片描述
通过观察某一行输出语句打印的layer的值,我们可以看到在不同块中声明的同名变量的影响范围,以及在块有嵌套的时候只有最里面的变量是可见的。

如果本文对你有帮助请点赞支持一下下~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值