1. 程式人生 > >C++變數作用域

C++變數作用域

C++變數作用域

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

  • 在函式或一個程式碼塊內部宣告的變數,稱為區域性變數。

  • 在函式引數的定義中宣告的變數,稱為形式引數。

  • 在所有函式外部宣告的變數,稱為全域性變數。

我們將在後續的章節中學習什麼是函式和引數。本章我們先來講解宣告是區域性變數和全域性變數。

區域性變數

在函式或一個程式碼塊內部宣告的變數,稱為區域性變數。它們只能被函式內部或者程式碼塊內部的語句使用。下面的例項使用了局部變數:

例項

#include<iostream>usingnamespacestd;

intmain(){// 區域性變數宣告inta, b;
 
intc;

 
// 實際初始化
a = 10;
 
b = 20;
 
c = a + b;

 
cout << c;

 
return0;
}

全域性變數

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

全域性變數可以被任何函式訪問。也就是說,全域性變數一旦宣告,在整個程式中都是可用的。下面的例項使用了全域性變數和區域性變數:

例項

#include<iostream>usingnamespacestd;

// 全域性變數宣告intg;

intmain(){// 區域性變數宣告inta, b;

 
// 實際初始化a = 10;
 
b = 20;
 
g = a + b;

 
cout
<< g;

 
return0;
}

在程式中,區域性變數和全域性變數的名稱可以相同,但是在函式內,區域性變數的值會覆蓋全域性變數的值。下面是一個例項:

例項

#include<iostream>usingnamespacestd;

// 全域性變數宣告intg = 20;

intmain(){// 區域性變數宣告intg = 10;

 
cout << g;

 
return0;
}

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

10

初始化區域性變數和全域性變數

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

資料型別初始化預設值
int0
char'\0'
float0
double0
pointerNULL

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