c語(yǔ)言static的作用有哪些

小億
113
2023-09-11 16:56:41

C語(yǔ)言中的static關(guān)鍵字有以下幾種作用:

  1. 限制作用域:在函數(shù)內(nèi)部使用static修飾局部變量,可以將其作用域限制在函數(shù)內(nèi)部,使得變量在函數(shù)執(zhí)行完后仍然保持其值,且對(duì)其他函數(shù)不可見(jiàn)。
void func() {
static int count = 0;
count++;
printf("count: %d\n", count);
}
int main() {
func(); // 輸出: count: 1
func(); // 輸出: count: 2
return 0;
}
  1. 保護(hù)數(shù)據(jù):在C文件內(nèi)使用static修飾全局變量,可以將其作用域限制在當(dāng)前文件內(nèi)部,使得其他文件無(wú)法訪問(wèn)該變量。
// file1.c
static int count = 0;
// file2.c
extern int count; // 編譯錯(cuò)誤,無(wú)法訪問(wèn)file1.c中的count變量
  1. 隱藏函數(shù):在C文件內(nèi)使用static修飾函數(shù),可以將其作用域限制在當(dāng)前文件內(nèi)部,使得其他文件無(wú)法調(diào)用該函數(shù)。
// file1.c
static void func() {
printf("Hello, World!\n");
}
// file2.c
extern void func(); // 編譯錯(cuò)誤,無(wú)法調(diào)用file1.c中的func函數(shù)
  1. 提供持久性:在靜態(tài)變量中使用static修飾,可以使得變量在程序執(zhí)行過(guò)程中保持其值不變,且對(duì)其他函數(shù)不可見(jiàn)。
int func() {
static int count = 0;
count++;
return count;
}
int main() {
printf("%d\n", func()); // 輸出: 1
printf("%d\n", func()); // 輸出: 2
return 0;
}

0