静态作用域和块结构学习

C语言和它的同类语言在内的大多数语言使用静态作用域。

什么是块?

1在C/C++语言中,块是一种语句,块可以出现在任何地方。

2一个块包含了一个声明的序列,然后再跟着一个语句序列,这些声明和语句使用一对括号包围起来

3块可以在嵌套在另一个块内,这个嵌套特性称为块结构。(ps:但是不能在一个函数(方法)内部定义另一个函数(方法))

什么是变量和静态作用域

变量是指向存储中的某个特定的位置,静态策略是在编译时刻决定,如果通过阅读就可以确定一个声明的作用域,那么这个语言使用的就是静态作用域。

变量作用域的规则,如图1-1,C++代码片段:

 #include<iostream>
 using namespace std;
 main()
 {
 	int first = 1;
 	int second =1;
 	{
 		int second=2;
		 {
 			int first = 1;
 			cout<<first<<" "<<second<<endl;
		 }
		{
			int second =4;
			cout<<first<<" "<<second<<endl; 
		}
		cout<<first<<" "<<second<<endl;
 	}
 	cout<<first<<" "<<second<<endl;
 } 

 

                                                                                                                       图1-1

变量声明的作用域规则:如果变量名字X的声明块B属于块A的,那么A的作用域包括整个块B,但是以任意深度嵌套在A中(无论有多少重块),重新声明了变量x的所有块B不在A块的作用域范围。图1-2程序块结构示意图:

                                                   图1-2

考虑块B1中的声明 int first = 1,它的作用域包括整个块B1,如图1-2所示,但是前提(如果B1块中,比如嵌套在里面的块有自己相同变量名的声明,如B3,那么B1的作用域不包括B3)。同理其他变量也如此。从这个思路角度来看,其他任何程序语言里面,变量名的作用范围和这个原理相似的,对于出现相同变量名,值的问题,可以得到很好的解决,对于入门学习来说,区分它们就变得容易了。

图1-1代码输出结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值