變量作用域

2018-08-12 22:03 更新

變量作用域

變量作用域就是指變量在程序中能夠操作的區(qū)域,通常按照在程序中不同地方聲明可以分為如下三類:

  1. 局部變量:在函數(shù)中或者由花括號括起來的代碼塊中聲明。
  2. 形式變量:在函數(shù)的參數(shù)中聲明,也叫形參。
  3. 全局變量:在所有函數(shù)之外聲明的變量。

關(guān)于函數(shù)及函數(shù)參數(shù)的內(nèi)容我們會在后續(xù)章節(jié)中學(xué)習(xí)。這里我們首先學(xué)習(xí)關(guān)于局部變量和全部變量的相關(guān)內(nèi)容。

局部變量

在函數(shù)或代碼塊內(nèi)部聲明的變量稱為局部變量。他們在函數(shù)體內(nèi)聲明后僅能被其聲明的所在函數(shù)體內(nèi)部的后續(xù)語句操作。局部變量不能被函數(shù)外部訪問到。下面就是使用局部變量的例子。

    #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;
    }

全局變量

全局變量通常會被聲明定義在所有函數(shù)體的外面,大部分情況下是在程序的最上方定義。全部變量的生命周期就是進(jìn)程從開始到程序執(zhí)行結(jié)束的整個過程。

全局變量可以被任何函數(shù)訪問。也就是說,全局變量一旦被聲明,將在程序的整個生命周期內(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)如,使用變量名僅能訪問到局部變量。比如:

    #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)并不會對該變量進(jìn)行初始化,所以需要程序員進(jìn)行初始化操作。與之不同的是,全局變量定義后會被編譯系統(tǒng)自動初始化,具體初始化的值如下:

數(shù)據(jù)類型 默認(rèn)初始化的值
int 0
char '\0'
float 0
double 0
pointer NULL

適如其分的給變量初始化是一個很好的編程習(xí)慣,否則,有時程序會出現(xiàn)很多意想不到的錯誤。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號