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;
}
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP