static關鍵字可以修飾:
1. 修飾區域性變數-靜態區域性變數
2. 修飾全域性變數-靜態全域性變數
3. 修飾函式-靜態函式
1.修飾區域性變數:
static修飾區域性變數改變了變數的生命週期,讓靜態區域性變數出了作用域依然存在,到程式結束,
生命週期才結束。
2.修飾全域性變數:
乙個全域性變數被static修飾,使得這個全域性變數只能在本原始檔內使用,
不能在其他原始檔內使用。
舉例:test1.c
int sum =
122;
test2.c
#include
extern
int sum;
void
main()
可以正常執行
加乙個static修飾符後
test1.c
static
int sum =
122;
test2.c
#include
extern
int sum;
void
main()
執行報錯,提示找不到sum這個變數,也就是說在編譯的時候會出現連線性錯誤。
3.修飾函式
乙個函式被static修飾,使得這個函式只能在本原始檔內使用,不能在其他原始檔內使用。
舉例:add.c
int
add(
int a,
int b)
test.c
#include
extern
intadd
(int
,int);
void
main()
執行成功
加上static修飾符後
add.c
static
intadd
(int a,
int b)
test.c
#include
extern
intadd
(int
,int);
void
main()
執行報錯,提示找不到add函式,也就是說編譯的時候會出現連線性錯誤。 C語言關鍵字Static
c語言中static的語義 1.static變數 1 區域性 a.靜態區域性變數在函式內定義,生存期為整個源程式,但作用域與自動變數相同,只能在定義該變數的函式內使用。退出該函式後,儘管該變數還繼續存在,但不能使用它。b.對基本型別的靜態區域性變數若在說明時未賦以初值,則系統自動賦予0值。而對自動變...
c語言static關鍵字
以前一直覺得static關鍵字僅僅是定義乙個靜態的變數,今天在看書的時候發現一切沒那麼簡單,遂決定記錄下來。1.static關鍵字指明變數是乙個靜態變數,即static修飾的區域性變數並不是分配在棧中,而是分配在程式的靜態區中,所以在函式呼叫後其記憶體並不會被釋放。這裡需要注意乙個點,也就是說並不是...
C語言 關鍵字static
一 修飾區域性變數 靜態區域性變數 修飾前 include void test intmain return0 修飾後 include void test intmain return0 結論 static修飾區域性變數改變了變數的生命週期,讓靜態區域性變數出了作用域依然存在,到程式結束,生命週期才...