變量作用域就是指變量在程序中能夠操作的區(qū)域,通常按照在程序中不同地方聲明可以分為如下三類:
關(guān)于函數(shù)及函數(shù)參數(shù)的內(nèi)容我們會(huì)在后續(xù)章節(jié)中學(xué)習(xí)。這里我們首先學(xué)習(xí)關(guān)于局部變量和全部變量的相關(guān)內(nèi)容。
在函數(shù)或代碼塊內(nèi)部聲明的變量稱為局部變量。他們?cè)诤瘮?shù)體內(nèi)聲明后僅能被其聲明的所在函數(shù)體內(nèi)部的后續(xù)語(yǔ)句操作。局部變量不能被函數(shù)外部訪問(wèn)到。下面就是使用局部變量的例子。
#include <iostream>
using namespace std;
int main ()
{
// Local variable declaration:
int a, b;
int c;
// actual initialization
a = 10;
b = 20;
c = a + b;
cout << c;
return 0;
}
全局變量通常會(huì)被聲明定義在所有函數(shù)體的外面,大部分情況下是在程序的最上方定義。全部變量的生命周期就是進(jìn)程從開(kāi)始到程序執(zhí)行結(jié)束的整個(gè)過(guò)程。
全局變量可以被任何函數(shù)訪問(wèn)。也就是說(shuō),全局變量一旦被聲明,將在程序的整個(gè)生命周期內(nèi)都是有效的。下面是使用全局和局部變量的例子:
#include <iostream>
using namespace std;
// Global variable declaration:
int g;
int main ()
{
// Local variable declaration:
int a, b;
// actual initialization
a = 10;
b = 20;
g = a + b;
cout << g;
return 0;
}
程序中的局部變量和全局變量可以有相同的變量名稱。但是在局部變量所在函數(shù)體內(nèi)如,使用變量名僅能訪問(wèn)到局部變量。比如:
#include <iostream>
using namespace std;
// Global variable declaration:
int g = 20;
int main ()
{
// Local variable declaration:
int g = 10;
cout << g;
return 0;
}
上述例子中的程序被編譯并執(zhí)行后,將顯示如下結(jié)果:
10
局部變量被定義后,默認(rèn)情況下,系統(tǒng)并不會(huì)對(duì)該變量進(jìn)行初始化,所以需要程序員進(jìn)行初始化操作。與之不同的是,全局變量定義后會(huì)被編譯系統(tǒng)自動(dòng)初始化,具體初始化的值如下:
數(shù)據(jù)類型 | 默認(rèn)初始化的值 |
---|---|
int | 0 |
char | '\0' |
float | 0 |
double | 0 |
pointer | NULL |
適如其分的給變量初始化是一個(gè)很好的編程習(xí)慣,否則,有時(shí)程序會(huì)出現(xiàn)很多意想不到的錯(cuò)誤。