现在的位置: 首页 > 综合 > 正文

名称空间(下)

2013年07月12日 ⁄ 综合 ⁄ 共 797字 ⁄ 字号 评论关闭

名称空间(上)的程序运行结果

接下来是变量作用域的问题(这个我个人觉的还是蛮重要的,在编程中经常会遇到变量申明的问题,所已这专名总结了下):

/*
	1)在两个不同的代码块里可以重名
	2)同一命名空间里不可以重名
	3)循环里也是一个独立的代码块
	4)变量的作用域为:自己所在的代码块,及该代码块所包含的其他代码块!
	变量有效值,为离自己最近的代码快(当然这里的最近,不是真正的距离上的最近,值得代码快的包含等级,
		比如
		代码块A
		{
			代码块B
			{
				代码块C{}
			}
		}
		代码快D{}
	
		则代码块C距B,比距A更近!
		代码D于B、C都没包含的关系
	(额,自己不知道这里有米有说清楚)

	
*/
int i=0;
int _tmain(int argc, _TCHAR* argv[])
	//代码块A
{
	using namespace std;

	cout<<i<<endl;		//输出0---全局
	int i=1;

	//代码块B
	{
		cout<<i<<endl;	//输出1------代码块A的全局变量!
		//代码块B 有一个全局变量i,然后又申请了一个代码块B的局部变量i,在该局部i申明后的代码里i都指的是局部i!
		int i=2;
		cout<<i<<endl;	//输出2-----代码块B的局部变量i
		//代码块C
		{
			cout<<i;//2,代码块B的值
		}
	}
	//int i=3;				//报错,“i”: 重定义;多次初始化-------在同一代码块里不能有重名的申明和定义!

	cout<<i<<endl;		//输出1,代码块A,


	//在for循环里或在for语句中申明定义的变量,只在循环代码块中有效
	for(int j=0;j<3;j++)
		//代码块C
	{
		cout<<"for 中j="<<j<<endl;
	}
	//cout<<j;	//ERROR“j”: 未声明的标识符----说明在for中定义的j作用域仅仅只在循环内!

	/*int j=7;
	cout<<"for 外j="<<j<<endl;*/
	return 0;
}

代码下载

抱歉!评论已关闭.