首頁 >常見問題 >C語言中靜態變數有什麼用

C語言中靜態變數有什麼用

清浅
清浅原創
2019-05-05 16:42:0420513瀏覽

C語言中靜態變數的作用是在函數呼叫的過程中保持值不變,因為靜態變數具有記憶作用;但是其作用域範圍是有限的,只能被模組內的函數存取等。

C語言中靜態變數有什麼用

推薦:《c教程

C語言中靜態變數的作用是:靜態變數具有記憶作用,在函數呼叫的過程中保持值不變;作用域範圍是有限的,只能被模組內的函數存取等。

C語言中靜態變數有什麼用

在C語言中,關鍵字static的意思是靜態的,有3個明顯的作用:

1. 在函數體內,靜態變量具有記憶作用,即一個被宣告為靜態的變數在這一函數被呼叫的過程中其值維持不變。

2. 在模組內(但在函數體外),它的作用域範圍是有限制的,如果一個變數被宣告為靜態的,那麼該變數可以被模組內所有的函數訪問,但不能被模組外的其他函數存取。

3. 內部函數應該在目前原始檔中說明和定義,對於可在目前來源檔案以外使用的函數,應該在一個頭檔中說明,使用這些函數的來源檔案要包含這個頭文件。

靜態資料成員的特性:

1. 對於非靜態資料成員,每個類別都有自己的複製。而靜態資料成員被當作是類別的成員。無論這個類別的物件被定義了多少個,靜態資料成員在程式中也只有一份複製品,由該類型的所有物件共用存取。

2. 靜態資料成員儲存在全域資料區。定義時要分配空間,所以不能在類別聲明中定義。由於靜態資料成員屬於本類的所有對象共享,所以他不屬於特的類對象,在沒有產生類對象時,其作用域就可見,即在沒有產生類的實例時,程序員也可以使用它。

3. 靜態資料成員也遵從public、protect、private存取規則。

4. static成員變數的初始化在類別外,此時無法再帶上static的關鍵字。 private、protect的static成員雖然可以在類別外初始化,但是不能在類別外被存取。

靜態資料成員的優點:

1. 靜態資料成員沒有進入程式的全域名字空間,因此不存在與程式中其他全域名字衝突的可能性。

2.可以實現訊息隱藏。靜態資料成員可以使private成員,而全域變數不能。

#include<stdio.h>
#include <iostream>
#include "a.h"
using namespace std;
void fun(int i)
{    static int value = i++;
    cout<<value<<endl;
}int main()
{
    fun(0);
    fun(1);
    fun(2);    return 0;
}

運行結果

0
0
0

以上是C語言中靜態變數有什麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn