當 `static` 關鍵字用于不同的上下文時,其含義和作用也會有所不同。下面是更多示例代碼,展示了 `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`,意味著它在函數調用之間保持持久性,并且其初始值只在第一次函數調用時初始化。每次調用 `increment()` 函數時,`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()` 函數中,可以直接訪問和使用靜態(tài)全局變量。
示例3:靜態(tài)函數
#include static void staticFunction() {printf("Static function\n");}int main() {staticFunction(); // 輸出:Static functionreturn 0;}
在這個示例中,`staticFunction()` 是一個靜態(tài)函數。它被聲明為 `static`,意味著它的作用域僅限于當前文件,無法被其他文件調用。
示例4:靜態(tài)結構體成員
#include struct MyStruct {int x;static int y;};int main() {struct MyStruct obj;obj.x = 5;obj.y = 10; // 錯誤:無法在結構體中使用靜態(tài)成員return 0;}
在這個示例中,`MyStruct` 結構體中的 `y` 成員被聲明為靜態(tài)。然而,C語言不允許在結構體中使用靜態(tài)成員。
示例5:靜態(tài)局部數組
#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)局部數組。它被聲明為 `static`,意味著它在函數調用之間保持持久性,并且其初始值只在第一次函數調用時初始化。每次調用 `printArray()` 函數時,都會打印相同的數組內容。
-
C語言
+關注
關注
180文章
7615瀏覽量
137827 -
static
+關注
關注
0文章
33瀏覽量
10413
發(fā)布評論請先 登錄
相關推薦
EE-128:C語言中的DSP:從C調用匯編類成員函數
![EE-128:<b class='flag-5'>C</b><b class='flag-5'>語言中</b>的DSP:從<b class='flag-5'>C</b>調用匯編類成員函數](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
C語言中申請的堆內存能不能自動釋放
C語言中的頭文件能不能重復包含
C語言中的socket編程基礎
c語言中從左到右結合怎么看
C語言數據類型有哪些
![<b class='flag-5'>C</b><b class='flag-5'>語言</b>數據類型有哪些](https://file1.elecfans.com/web2/M00/C5/16/wKgZomX6UKqAb6q4AABHS7gAoYk070.png)
嵌入式系統(tǒng)中C語言結構體的基礎實現與應用
![嵌入式系統(tǒng)中<b class='flag-5'>C</b><b class='flag-5'>語言</b>結構體的基礎實現與應用](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)
評論