1. 程式人生 > >局部變量和全局變量的區別

局部變量和全局變量的區別

沒有 例如 賦值 ont 初始化 退出 std cpp 部分

局部變量和全局變量的區別

局部變量可以與全局變量重名,但是局部變量會屏蔽全局變量。要使用全局變量,需要使用::。在函數體內引用變量會用到同名的局部變量而不是全局變量,對於一些編譯器來說,在同一個函數體內可以定義多個同名的局部變量。例如我們可以在一個函數內部,在兩個循環中都定義同名的局部變量i,而局部變量i的作用域在那個循環體內

具體來說,全局變量和局部變量的區別如下:

1. 作用域不同:全局變量的作用域為整個程序,而局部變量的作用域為當前函數或循環等

2. 內存存儲方式不同:全局變量存儲在全局數據區中,局部變量存儲在棧區

3. 生命期不同:全局變量的生命期和主程序一樣,隨程序的銷毀而銷毀,局部變量在函數內部或循環內部,隨函數的退出或循環退出就不存在了

4. 使用方式不同:全局變量在聲明後程序的各個部分都可以用到,但是局部變量只能在局部使用。函數內部會優先使用局部變量再使用全局變量

需要註意一點的是,局部變量不能賦值為同名全局變量的值。

#include<iostream>
#include<algorithm>
using namespace std;

int value = 1;

int main(){
	//test
	int value = value;
	cout<<value<<endl;

	return 0;
}


程序輸出:-898993460

分析如下:

1. 定義了一個全局變量value初始化值為1,同時在main函數內部定義了一個局部變量value

2. 在main函數內部對局部變量value進行賦值value = value,因為局部變量會屏蔽全局變量,因此此時賦值語句中兩個value都是局部變量,因為value還沒有初始化所以值為隨機值

3. 所以輸出value的時候值為隨機值,而不是1

局部變量和全局變量的區別