天天看點

C++ 變量作用域

作用域是程式的一個區域,一般來說有三個地方可以定義變量:

  • 在函數或一個代碼塊内部聲明的變量,稱為局部變量。
  • 在函數參數的定義中聲明的變量,稱為形式參數。
  • 在所有函數外部聲明的變量,稱為全局變量。

我們将在後續的章節中學習什麼是函數和參數。本章我們先來講解什麼是局部變量和全局變量。

局部變量

在函數或一個代碼塊内部聲明的變量,稱為局部變量。它們隻能被函數内部或者代碼塊内部的語句使用。下面的執行個體使用了局部變量:

執行個體

#include <iostream>

using namespace std;

int main ()

{

// 局部變量聲明

int a, b;

int c;

// 實際初始化

a = 10;

b = 20;

c = a + b;

cout << c;

return 0;

}

全局變量

在所有函數外部定義的變量(通常是在程式的頭部),稱為全局變量。全局變量的值在程式的整個生命周期内都是有效的。

全局變量可以被任何函數通路。也就是說,全局變量一旦聲明,在整個程式中都是可用的。下面的執行個體使用了全局變量和局部變量:

// 全局變量聲明

int g;

g = a + b;

cout << g;

在程式中,局部變量和全局變量的名稱可以相同,但是在函數内,局部變量的值會覆寫全局變量的值。下面是一個執行個體:

int g = 20;

int g = 10;

當上面的代碼被編譯和執行時,它會産生下列結果:

10
      

初始化局部變量和全局變量

當局部變量被定義時,系統不會對其初始化,您必須自行對其初始化。定義全局變量時,系統會自動初始化為下列值:

資料類型 初始化預設值
int
char '\0'
float
double
pointer NULL

正确地初始化變量是一個良好的程式設計習慣,否則有時候程式可能會産生意想不到的結果。