C語言 - static 解讀
阿新 • • 發佈:2020-09-17
static在C語言中主要是兩種用法
1、修飾區域性變數 2、修飾函式和全域性變數 區域性變數按照儲存形式來分,分為auto,static,register 首先從記憶體四區的角度去看,auto即為普通的區域性變數,儲存在棧上,當函式結束時,隨之釋放。 register為暫存器變數,存放在暫存器裡面,呼叫速度快。 在C語言中register變數不能取地址,會報錯。 而在c++中,對register做了增強,黨C++編譯器發現程式中需要取register變數的地址時,register對變數的宣告變得無效。 static修飾區域性變數時該變數是存放在靜態儲存區,生命週期是整個程式結束。 static區域性變數初次定義時就要初始化,且只能初始化一次。如果在定義的時候不初始化,編譯器就會自動賦值為0;(也就是說如果重複呼叫同一個函式,在第二次呼叫時,就不會再執行static區域性變數初始化那句話 了) 特點: static區域性變數的”記憶性”與生存期的”全域性性”voidstaticLocalVar()
{
staticinta=0;// 執行期時初始化一次, 下次再呼叫時, 不進行初始化工作
printf(“%d”,a);
a++;
}
intmain()
{
staticLocalVar();// 第一次呼叫, 輸出a=0
staticLocalVar();// 第二次呼叫, 記憶了第一次退出時的值, 輸出a=1
return0;
}
注意事項:1. “記憶性”, 程式執行很重要的一點就是可重複性, 而static變數的”記憶性”破壞了這種可重複性, 造成不同時刻至執行的結果可能不同.
使用內部函式的好處是:不同的人編寫不同的函式時,不用擔心自己定義的函式,是否會與其它檔案中的函式同名。
轉載至:https://blog.csdn.net/y780465649/article/details/52155641