如果在语句块中定义了一个新变量,则仅当程序执行语句块中的语句时,该变量才存在。执行完该语句块后该变量被释放。这表明此变量在该语句块中财是可用的。
#include<iostream>
int main()
{
using namespace std;
int x=20;
{ //block starts
int y<<100;
cout<<x<<endl; //ok
cout<<y<<endl; //ok
} //block ends
cout<<x<<endl; //ok
cout<<y<<endl; //invalid,won't compile
return 0;
}
注意:在外部语句块中定义的变量在内部语句块中也是被定义了的。
如果在一个语句块中声明一个变量,而外部语句块中也有一个这种名称的变量,在声明位置到内部语句块结束的范围之内,新变量将隐藏就变量;然后旧变量再次可见:
#include <iostream>
int main()
{
using std::cout;
using std::endl;
int x=20; //original x
{ //block starts
cout<<x<<endl; //use original x
int x=100; //new x;
cout<<x<<endl; //use new x
} //block ends
cout<<x<<endl;
return 0;
}