題組內容
二、考慮下列 C 程式:
#include
int f(void) {
static int x = 10; //第⑵小題
x++;
return x;
}
int main(void) {
int j;
for (j = 0; j < 5; j++) {
printf("Value of f(): %d
", f());
}
return 0;
}
⑵ C 語言中,一個變數的領域(scope)與生命期(lifetime)可以是不同的,請以 上列函數 f 中的變數 x,來解釋這句話。(10 分)
詳解 (共 1 筆)
詳解
在 C 語言中,變數的作用域(scope)是指變數可被存取的範圍,而變數的生命週期(lifetime)是指變數的存在期間。
對於函數中的靜態變數,在函數被第一次調用時,該變數被初始化並分配內存。然後,該變數在整個程式的執行期間都會保持其值,即使在函數調用完畢之後也是如此。因此,這個變數的生命週期是整個程式的執行期間,而其作用域僅限於函數內部。
在上面的程式碼中,變數 x 的作用域僅限於函數 f 內部,而它的生命週期則從第一次函數 f 被調用開始,一直到整個程式的執行結束為止。因此,每次呼叫函數 f 時,變數 x 的值都會被累加。