c語言static的作用舉例 C語言中static關(guān)鍵字的用法和示例詳解
C語言中的static關(guān)鍵字是非常常用且重要的一個特性,它可以在不同的上下文中產(chǎn)生不同的作用。本文將從以下幾個角度詳細(xì)論述static關(guān)鍵字的作用,并給出相應(yīng)的例子加以說明。1. 靜態(tài)變量在函數(shù)內(nèi)部聲
C語言中的static關(guān)鍵字是非常常用且重要的一個特性,它可以在不同的上下文中產(chǎn)生不同的作用。本文將從以下幾個角度詳細(xì)論述static關(guān)鍵字的作用,并給出相應(yīng)的例子加以說明。
1. 靜態(tài)變量
在函數(shù)內(nèi)部聲明的變量一般都是局部變量,其作用域僅限于該函數(shù)內(nèi)部。而當(dāng)我們在局部變量之前加上static修飾符時,該變量就成為了靜態(tài)變量。靜態(tài)變量的作用域仍然是該函數(shù)內(nèi)部,但是其生命周期會伴隨程序的整個運(yùn)行過程。這意味著無論是調(diào)用多少次該函數(shù),靜態(tài)變量的值都會保持。
示例代碼如下:
```c
#include
void count() {
static int num 0;
num ;
printf("當(dāng)前計(jì)數(shù)值:%d
", num);
}
int main() {
count(); // 輸出:當(dāng)前計(jì)數(shù)值:1
count(); // 輸出:當(dāng)前計(jì)數(shù)值:2
count(); // 輸出:當(dāng)前計(jì)數(shù)值:3
return 0;
}
```
在上述示例中,count函數(shù)內(nèi)部聲明的靜態(tài)變量num,在每次調(diào)用count函數(shù)時都會自增。由于num是靜態(tài)變量,其值會得到保留,所以每次輸出的計(jì)數(shù)值都會遞增。
2. 靜態(tài)函數(shù)
除了可以修飾變量,static關(guān)鍵字還可以用來修飾函數(shù)。當(dāng)我們在函數(shù)聲明前面加上static修飾符時,該函數(shù)就成為了靜態(tài)函數(shù)。靜態(tài)函數(shù)的作用域限制在當(dāng)前源文件內(nèi)部,無法被其他源文件訪問,也就是說它具有了文件作用域。
示例代碼如下:
```c
// file1.c
static int add(int a, int b) {
return a b;
}
// file2.c
#include
extern int add(int a, int b);
int main() {
int sum add(3, 5);
printf("兩數(shù)之和:%d
", sum);
return 0;
}
```
在上述示例中,file1.c文件中的add函數(shù)被聲明為靜態(tài)函數(shù),它的作用域僅限于file1.c文件內(nèi)部。通過在file2.c文件中使用extern關(guān)鍵字聲明add函數(shù)后,我們可以在main函數(shù)中調(diào)用add函數(shù)并獲得正確的結(jié)果。
3. 靜態(tài)全局變量
除了在函數(shù)內(nèi)部聲明靜態(tài)變量外,我們還可以在全局作用域下聲明靜態(tài)變量。靜態(tài)全局變量與普通的全局變量有所不同,它只能在當(dāng)前源文件中訪問,無法被其他源文件引用。
示例代碼如下:
```c
// file1.c
static int count 0;
void increaseCount() {
count ;
}
// file2.c
#include
extern int count; // 引用外部定義的count
int main() {
increaseCount();
printf("當(dāng)前計(jì)數(shù)值:%d
", count);
return 0;
}
```
在上述示例中,file1.c文件中的count變量被聲明為靜態(tài)全局變量,它的作用域僅限于該文件內(nèi)部。通過在file2.c文件中使用extern關(guān)鍵字聲明count變量后,我們可以在main函數(shù)中訪問并輸出count的值。
綜上所述,C語言中的static關(guān)鍵字具有多種作用,包括定義靜態(tài)變量、靜態(tài)函數(shù)以及靜態(tài)全局變量等。它們的共同特點(diǎn)是作用范圍有所限制,但也正因?yàn)檫@種限制,static關(guān)鍵字在編程中發(fā)揮著重要的作用。希望本文的解釋和示例能夠幫助讀者更好地理解和運(yùn)用static關(guān)鍵字。