當 `static` 關(guān)鍵字用于不同的上下文時,其含義和作用也會有所不同。下面是更多示例代碼,展示了 `static` 在不同用法下的具體效果:
示例1:靜態(tài)局部變量
#include void increment() {static int count = 0;count++;printf("Count: %d\n", count);}int main() {increment(); // 輸出:Count: 1increment(); // 輸出:Count: 2increment(); // 輸出:Count: 3return 0;}
在這個示例中,`count` 是一個靜態(tài)局部變量。它被聲明為 `static`,意味著它在函數(shù)調(diào)用之間保持持久性,并且其初始值只在第一次函數(shù)調(diào)用時初始化。每次調(diào)用 `increment()` 函數(shù)時,`count` 的值遞增并打印。
示例2:靜態(tài)全局變量
#include static int globalVar = 10;void function() {printf("Global variable: %d\n", globalVar);}int main() {function(); // 輸出:Global variable: 10return 0;}
在這個示例中,`globalVar` 是一個靜態(tài)全局變量。它被聲明為 `static`,意味著它的作用域僅限于當前文件,并且無法被其他文件訪問。在 `function()` 函數(shù)中,可以直接訪問和使用靜態(tài)全局變量。
示例3:靜態(tài)函數(shù)
#include static void staticFunction() {printf("Static function\n");}int main() {staticFunction(); // 輸出:Static functionreturn 0;}
在這個示例中,`staticFunction()` 是一個靜態(tài)函數(shù)。它被聲明為 `static`,意味著它的作用域僅限于當前文件,無法被其他文件調(diào)用。
示例4:靜態(tài)結(jié)構(gòu)體成員
#include struct MyStruct {int x;static int y;};int main() {struct MyStruct obj;obj.x = 5;obj.y = 10; // 錯誤:無法在結(jié)構(gòu)體中使用靜態(tài)成員return 0;}
在這個示例中,`MyStruct` 結(jié)構(gòu)體中的 `y` 成員被聲明為靜態(tài)。然而,C語言不允許在結(jié)構(gòu)體中使用靜態(tài)成員。
示例5:靜態(tài)局部數(shù)組
#include void printArray() {static int arr[] = {1, 2, 3, 4, 5};int size = sizeof(arr) / sizeof(arr[0]);for (int i = 0; i < size; i++) {printf("%d ", arr[i]);}printf("\n");}int main() {printArray(); // 輸出:1 2 3 4 5printArray();// 輸出:1 2 3 4 5return 0;}
在這個示例中,`arr` 是一個靜態(tài)局部數(shù)組。它被聲明為 `static`,意味著它在函數(shù)調(diào)用之間保持持久性,并且其初始值只在第一次函數(shù)調(diào)用時初始化。每次調(diào)用 `printArray()` 函數(shù)時,都會打印相同的數(shù)組內(nèi)容。
-
C語言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137736 -
static
+關(guān)注
關(guān)注
0文章
33瀏覽量
10407
發(fā)布評論請先 登錄
相關(guān)推薦
EE-62:在C語言中訪問短字內(nèi)存
![EE-62:<b class='flag-5'>在</b><b class='flag-5'>C</b><b class='flag-5'>語言中</b>訪問短字內(nèi)存](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
EE-128:C語言中的DSP:從C調(diào)用匯編類成員函數(shù)
![EE-128:<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的DSP:從<b class='flag-5'>C</b>調(diào)用匯編類成員函數(shù)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C語言中申請的堆內(nèi)存能不能自動釋放
C語言中的頭文件能不能重復包含
技術(shù)干貨驛站 ▏深入理解C語言:掌握C語言條件判斷,從if到switch的應用
![技術(shù)干貨驛站 ▏深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:掌握<b class='flag-5'>C</b><b class='flag-5'>語言</b>條件判斷,從if到switch的應用](https://file1.elecfans.com/web2/M00/FC/CD/wKgZomaWI5uASgBaAABuQHdMO4I302.png)
C語言中的socket編程基礎(chǔ)
c語言中從左到右結(jié)合怎么看
C語言數(shù)據(jù)類型有哪些
![<b class='flag-5'>C</b><b class='flag-5'>語言</b>數(shù)據(jù)類型有哪些](https://file1.elecfans.com/web2/M00/C5/16/wKgZomX6UKqAb6q4AABHS7gAoYk070.png)
嵌入式系統(tǒng)中C語言結(jié)構(gòu)體的基礎(chǔ)實現(xiàn)與應用
![嵌入式系統(tǒng)中<b class='flag-5'>C</b><b class='flag-5'>語言</b>結(jié)構(gòu)體的基礎(chǔ)實現(xiàn)與應用](https://file1.elecfans.com/web2/M00/C4/E6/wKgaomXv9r6Aaj6DAAAYJ3PfWAU110.jpg)
C語言中的typedef的應用
![<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的typedef的應用](https://file1.elecfans.com/web2/M00/C3/B9/wKgaomXn5LGAbFesAAAe4pvOxcc159.png)
C語言#define的應用
![<b class='flag-5'>C</b><b class='flag-5'>語言</b>#define的應用](https://file1.elecfans.com/web2/M00/C3/B9/wKgaomXn42eACLumAAAag1PydyU214.png)
C語言的指針用法
![<b class='flag-5'>C</b><b class='flag-5'>語言</b>的指針<b class='flag-5'>用法</b>](https://file1.elecfans.com/web2/M00/C2/A8/wKgZomXmuoSAKJcMAAANYarH0Zw193.jpg)
介紹C語言中錯誤處理和異常處理的一些常用的方法和策略
C語言中的可變參數(shù)介紹
![<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的可變參數(shù)介紹](https://file1.elecfans.com/web2/M00/C2/BA/wKgaomXezG6AcBLhAABI4KQSKz0893.png)
C語言中的動態(tài)內(nèi)存管理講解
![<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的動態(tài)內(nèi)存管理講解](https://file1.elecfans.com/web2/M00/C0/BB/wKgZomXYNZuATvacAABRO_zLRlc245.png)
評論