C語言 靜態變數static的用法
阿新 • • 發佈:2019-01-04
static有兩個作用
第一個作用: 修飾變數,變數又分為區域性和全域性變數,但他們都存在記憶體的靜態區
靜態全域性變數,作用於僅限於變數被定義的檔案。其他檔案即使用extern宣告也沒法使用,準確說就是作用域是從定義處開始,到檔案結束,
在定義處之前的那些程式碼不能使用它。
靜態區域性變數,在函式裡定義,就只能在這個函式裡使用,同一個文件中的其他函式也是用不了的。由於被static修飾的變數總是存在記憶體的
靜態區。所以即使這個函式執行結束,這個靜態變數的值不會被銷燬,函式下次使用時仍能使用。
第二個作用:修飾函式
函式前加static使得成為靜態函式,但此處的“static”的含義不是指儲存,而是隻對對函式的作用域僅限於本檔案(所以有內部函式) 關鍵字static有著不尋常的歷史,起初在C中表示退出一個塊後仍然存在的區域性變數,之後在C中又有了第二種含義:用來表示被其他檔案訪問的全域性變數和函式。
- <prename="code"class="html">//關鍵字static的用法
- #include<stdio.h>
-
#include<
- static int n;//定義的靜態全域性變數
- int fun1()
- {
- static int m=0;//靜態區域性變數
- m++;
- return m;
- }
- int fun2()
- {
- n=0;
- n++;
- return n;
- }
- int main()
- {
- int i;
- for(i=0;i<10;i++)
- {
-
fun1();//m為靜態區域性變數 這個函式執行結束,這個靜態變數的值不會被銷燬,函式下次使用時仍能使用。
- fun2();//n 靜態全域性變數 作用於僅限於變數被定義的檔案。
- }
- printf("m = %d\n",fun1());
- printf("n = %d\n",fun2());
- system("pause");
- return 0;
- }
輸出結果: