局部變量

維基百科,自由的百科全書

計算機科學中,局部變量(英語:local variables是擁有局部作用域變量。這樣的變量只能由聲明它的函數中訪問。在僅有兩層可見性的程序設計語言中,局部變量對應全局變量;另一方面,許多類ALGOL語言允許任意多層的嵌套函數,各自擁有私有變量、函數、常量和類型。

大多數程序設計語言中,局部變量是直接存儲在調用堆疊上的自動變量。即遞歸函數調用自己時,局部變量的每一份實例都在不同的地址空間中。於是在當前作用域對變量的聲明、寫入、讀取都不會在其被聲明的函數外產生副作用

靜態局部變量[編輯]

靜態局部變量(英語:static local variables)是一類特殊的局部變量,許多主流語言(C/C++Visual BasicVB.NET等)中都有該變量。靜態局部變量的值將一直保留,即便一個函數結束,另一個函數開始使用該變量。換言之,它是局部範圍(local scope)的靜態變量

靜態局部變量 和 靜態全局變量(英語:static global variables)的生命周期一樣,它們會存活到程序結束為之。[1] 它們的區別:靜態局部變量只可被一個函數訪問(function scope), 靜態全局變量 可被所有函數訪問(global scope)。

#include <iostream>
using namespace std;

void test()
{
    // var是一个静态局部变量
    static int var = 0;
    ++var;

    cout << var << endl;
}

int main()
{
    
    test(); // 输出1
    test(); // 输出2

    return 0;
}

閉包(英語:Closure)同樣可以做到靜態局部變量的效果。

另見[編輯]

參考資料[編輯]

  1. ^ Current C standardPDF (3.61 MB) (截至2009年 (2009-Missing required parameter 1=month!)). 注意第32頁章節 6.2.4《Storage durations of objects》。