C/C++ 中函式級別的靜態變數何時初始化?


靜態變數可以使用`static`關鍵字定義。它們是程式執行期間始終駐留在記憶體中的變數,即它們的生存期是整個程式執行過程。這與自動變數不同,自動變數只在函式執行時存在於記憶體中,函式結束時就會被銷燬。

函式級別的靜態變數在第一次使用時建立並初始化,儘管它們的記憶體是在程式載入時分配的。

演示 C 語言中函式級別靜態變數的程式如下所示:

示例

 線上演示

#include<stdio.h>
int func() {
   static int num = 0;
   num += 5;
   return num;
}
int main() {
   for(int i = 0; i<5; i++) {
      printf("%d\n", func());
   }
   return 0;
}

輸出

上述程式的輸出如下所示。

5
10
15
20
25

現在讓我們來理解上述程式。

函式`func()`包含一個初始化為 0 的靜態變數`num`。然後`num`增加 5,並返回其值。顯示此程式碼片段如下所示。

int func() {
   static int num = 0;
   num += 5;
   return num;
}

在`main()`函式中,使用`for`迴圈呼叫`func()`函式 5 次,並列印返回的`num`值。由於`num`是靜態變數,因此它在程式執行期間保留在記憶體中,並提供一致的值。顯示此程式碼片段如下所示。

int main() {
   for(int i = 0; i<5; i++) {
      printf("%d\n", func());
   }
   return 0;
}

更新於:2020年6月26日

716 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.