在C語言中,static
關鍵字有多種用途和場景,主要包括以下幾點:
static
用于局部變量時,它的生命周期會被延長至整個程序的執行期間,而不是僅限于其所在的代碼塊。這樣可以在函數調用之間保持變量的值。#include<stdio.h>
void func() {
static int count = 0;
count++;
printf("Count: %d\n", count);
}
int main() {
for (int i = 0; i < 5; i++) {
func();
}
return 0;
}
static
用于全局變量時,它的作用域將被限制在定義它的源文件內。這意味著其他源文件無法訪問到這個變量,從而實現了數據封裝和隱藏。// file1.c
#include<stdio.h>
static int globalVar = 10;
void printGlobalVar() {
printf("GlobalVar in file1.c: %d\n", globalVar);
}
// file2.c
#include<stdio.h>
extern void printGlobalVar();
int main() {
printGlobalVar(); // 輸出 GlobalVar in file1.c: 10
// printf("globalVar: %d\n", globalVar); // 編譯錯誤,因為globalVar在file2.c中不可見
return 0;
}
static
用于函數時,它的作用域同樣被限制在定義它的源文件內。這意味著其他源文件無法訪問到這個函數。這有助于將函數的實現細節隱藏在源文件中,提高代碼的模塊化和封裝性。// file1.c
#include<stdio.h>
static void printHello() {
printf("Hello from file1.c\n");
}
// file2.c
#include<stdio.h>
int main() {
// printHello(); // 編譯錯誤,因為printHello在file2.c中不可見
return 0;
}
總結起來,static
關鍵字在C語言中主要用于延長局部變量的生命周期、限制全局變量和函數的作用域以及實現代碼模塊化。