名稱空間(下)

名稱空間(上)的程序運行結果

接下來是變量作用域的問題(這個我個人覺的還是蠻重要的,在編程中經常會遇到變量申明的問題,所已這專名總結了下):

/*
	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;
}


代碼下載


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章