php7 源碼分析-準(zhǔn)備(static)

static

靜態(tài)局部變量使用static修飾符定義,即使在聲明時(shí)未賦初值,編譯器也會(huì)把它初始化為0。且靜態(tài)局部變量存儲(chǔ)于進(jìn)程的全局?jǐn)?shù)據(jù)區(qū),即使函數(shù)返回,它的值也會(huì)保持不變。

#include <stdio.h>   
void staticIndex()
{  
   int static p = 0;
   p ++;
   printf("%d ", p);
}
int main()
{
   int i = 0;
   for (i = 0; i < 10;)
   {
      staticIndex();
   }
   return 0;
}

總結(jié):

不加static修飾,函數(shù)或者代碼塊中的變量在函數(shù)或者代碼塊執(zhí)行完畢后就直接回收銷毀了,每次執(zhí)行都會(huì)重新分配內(nèi)存,每次都會(huì)銷毀。
加 static 修飾,函數(shù)或者代碼塊中的變量在函數(shù)或者代碼塊執(zhí)行第一次初始化分配內(nèi)存后,就算函數(shù)或者代碼塊執(zhí)行完畢,該變量也不會(huì)被回收 銷毀,直到程序結(jié)束 static 變量才會(huì)被回收。
當(dāng) static 作用于函數(shù)定義時(shí),或者用于代碼塊之外的變量聲明時(shí),static關(guān)鍵字用于修改標(biāo)識(shí)符的鏈接屬性。外部鏈接屬性變?yōu)閮?nèi)部鏈接屬性,標(biāo)識(shí)符的存儲(chǔ)類型和作用域不受影響。也就是說(shuō)變量或者函數(shù)只能在當(dāng)前源文件中訪問(wèn),不能在其他源文件中訪問(wèn)。
當(dāng)static 作用于代碼塊內(nèi)部的變量聲明時(shí),static關(guān)鍵字用于修改變量的存儲(chǔ)類型。從自動(dòng)變量變?yōu)殪o態(tài)變量,變量的屬性和作用域不受影響。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容