4.存儲持續性

1.自動存儲持續性(經典情況,不同作用域同名參數的“覆蓋”

在默認情況下,在函數中聲明的函數參數和變量的存儲持續性爲自動,作用域爲局部,沒有鏈接性。在程序執行其所屬代碼時被創建,在執行完函數或者代碼塊時,它們使用的內存被釋放。

#include <iostream>
using namespace std;

int main()
{
	int value = 1;//作用域爲整個main函數
	cout << "花括號外value= " << value << " &value= " << &value << endl;
	{
		int value = 333;  //作用域僅爲花括號內部
		cout << "花括號內value= " << value << " &value= " << &value << endl;
	}
	cout << "花括號外value= " << value << " &value= " << &value << endl;
	cin.get();
	return 0;
}

C++ primer plus的解釋是程序在執行內部代碼塊中的語句時,將value解釋爲局部代碼塊變量。我們說新的定義隱藏了以前的定義,新定義可見,舊定義暫時不可見。在程序離開該代碼塊時,原來的定義又可見。

程序中第一個cout語句輸出作用域爲main函數的value及其地址,第二行cout輸出代碼塊中的value,此時代碼塊中的value暫時隱藏了main中的value,它們不是同一個變量,在value=333代碼塊結束後,main中的value又重新可見

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