當 `static` 關鍵字用于不同的上下文時,其含義和作用也會有所不同。下面是更多示例代碼,展示了 `static` 在不同用法下的具體效果:
示例1:靜態局部變量
#include void increment() {static int count = 0;count++;printf("Count: %d\n", count);}int main() {increment(); // 輸出:Count: 1increment(); // 輸出:Count: 2increment(); // 輸出:Count: 3return 0;}
在這個示例中,`count` 是一個靜態局部變量。它被聲明為 `static`,意味著它在函數調用之間保持持久性,并且其初始值只在第一次函數調用時初始化。每次調用 `increment()` 函數時,`count` 的值遞增并打印。
示例2:靜態全局變量
#include static int globalVar = 10;void function() {printf("Global variable: %d\n", globalVar);}int main() {function(); // 輸出:Global variable: 10return 0;}
在這個示例中,`globalVar` 是一個靜態全局變量。它被聲明為 `static`,意味著它的作用域僅限于當前文件,并且無法被其他文件訪問。在 `function()` 函數中,可以直接訪問和使用靜態全局變量。
示例3:靜態函數
#include static void staticFunction() {printf("Static function\n");}int main() {staticFunction(); // 輸出:Static functionreturn 0;}
在這個示例中,`staticFunction()` 是一個靜態函數。它被聲明為 `static`,意味著它的作用域僅限于當前文件,無法被其他文件調用。
示例4:靜態結構體成員
#include struct MyStruct {int x;static int y;};int main() {struct MyStruct obj;obj.x = 5;obj.y = 10; // 錯誤:無法在結構體中使用靜態成員return 0;}
在這個示例中,`MyStruct` 結構體中的 `y` 成員被聲明為靜態。然而,C語言不允許在結構體中使用靜態成員。
示例5:靜態局部數組
#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` 是一個靜態局部數組。它被聲明為 `static`,意味著它在函數調用之間保持持久性,并且其初始值只在第一次函數調用時初始化。每次調用 `printArray()` 函數時,都會打印相同的數組內容。
-
C語言
+關注
關注
180文章
7604瀏覽量
136845 -
static
+關注
關注
0文章
33瀏覽量
10372
發布評論請先 登錄
相關推薦
評論