C語言static意思

在C語言中,static 這個關鍵字可以用在多個不同的上下文中,它有幾種不同的意思:

  1. 全域變數(Global Variables):當 static 用於全域變數時,表示該變數為靜態全域變數。這意味著該變數的初始化只在程式第一次執行到該變數的定義時進行一次,並且它的生命周期是整個程式執行期間。靜態全域變數在未初始化時會自動初始化為零。
static int myVar = 0; // 靜態全域變數
  1. 區域變數(Local Variables):當 static 用於區域變數(在函數內定義的變數)時,表示該變數為靜態區域變數。這意味著該變數的值在函數每次返回後仍然保留,並且它的生命周期是整個程式執行期間。靜態區域變數在未初始化時會自動初始化為零。
void myFunction() {
    static int myVar = 0; // 靜態區域變數
    // ...
}
  1. 函數(Functions):當 static 用於函數聲明時,表示該函數為靜態連結的。這意味著該函數只能在定義它的檔案夾或目錄中看到,而不能在其他檔案夾或目錄中看到或使用。這通常用於避免函數名稱的衝突。
static void myFunction() {
    // ...
}
  1. 資料成員(Data Members):在C++中,當 static 用於類別的資料成員時,表示該資料成員為靜態資料成員。這意味著該資料成員是類別的單一實例,所有對象都可以訪問它,並且它的生命周期是整個程式執行期間。
class MyClass {
public:
    static int myVar; // 靜態資料成員
};

int MyClass::myVar = 0; // 靜態資料成員的定義和初始化
  1. 方法(Methods):在C++中,當 static 用於類別的方法時,表示該方法是靜態方法。這意味著該方法不需要類別的實例就可以被呼叫,並且它不能訪問類別的非靜態成員。
class MyClass {
public:
    static int myFunction() {
        // ...
    }
};

總之,static 這個關鍵字在C語言和C++中的用法非常靈活,具體意義取決於它的使用上下文。