(1)在修飾變數的時候,static
修飾的靜態區域性變數只執行初始化一次,而且延長了區域性變數的生命週期,直到程式執行結束以後才釋放。
(2)static
修飾全域性變數的時候,這個全域性變數只能在本檔案中訪問,不能在其它檔案中訪問,即便是extern
外部宣告也不可以。
(3)static
修飾乙個函式,則這個函式的只能在本檔案中呼叫,不能被其他檔案呼叫。static
修飾的變數存放在全域性資料區的靜態變數區,包括全域性靜態變數和區域性靜態變數,都在全域性資料區分配記憶體。初始化的時候自動初始化為 0。
(4)不想被釋放的時候,可以使用static
修飾。比如修飾函式中存放在棧空間的陣列。如果不想讓這個陣列在函式呼叫結束釋放可以使用static
修飾。
(5)考慮到資料安全性(當程式想要使用全域性變數的時候應該先考慮使用static
)。
詳情參考自
針對(1)給出以下例子:
#include
void
function()
intmain()
這樣會輸出5個1,因為i是區域性變數,作用域為函式內,而生命週期是從函式開始到結束,所以每次函式呼叫就會重新初始化為0然後加一。如果加上static
#include
void
function()
intmain()
這樣就會輸出12345,因為static
使得i變成靜態的,雖然它的作用域還是函式內,但是生命週期已經變成從程式開始執行到結束,且只能初始化一次,所以可以進行五次加一。 C語言學習筆記 static用法
1 修飾區域性變數 1 位置 靜態區域性變數被編譯器放在全域性儲存區靜態儲存區,所以它雖然是區域性的,但是在程式的整個生命週期中存在。2 訪問許可權 靜態區域性變數只能被其作用域內的變數或函式訪問。也就是說雖然它會在程式的整個生命週期中存在,由於它是static的,它不能被其他的函式和原始檔訪問。3...
c語言static用法
c程式一直由下列部分組成 1 正文段 cpu執行的機器指令部分 乙個程式只有乙個副本 唯讀,防止程式由於意外事故而修改自身指令 2 初始化資料段 資料段 在程式中所有賦了初值的全域性變數,存放在這裡。3 非初始化資料段 bss段 在程式中沒有初始化的全域性變數 核心將此段初始化為0。4 棧 增長方向...
Go學習之旅 Task12
在日常開發中,我們通常需要針對現有的功能進行單元測試,以驗證開發的正確性。在go標準庫中有乙個叫做testing的測試框架,可以進行單元測試,命令是go test 測試檔案通常是以xx test.go命名,放在同一包下面。現在假設現在需求是 完成兩個複數相加,我們只需要乙個函式便可以完成該任務。在開...