1. c語言static的作用和用法
static在c語言中是私有、靜態意思。
用於在函數中聲明「靜態變數」用,在每一次調用後,該變數並不在函數返回時立即釋放,變數中保存的值,可以保留到下一次調用時繼續有效。
私有就是隱藏。static函數只兄派氏能聲明後的本文中調用。static全局變數只能聲明後的本文中調用。static局部變數只能聲明後的本函數調用
靜態就是一直存在,相對於每次調用動態分配而言。static函數未驗證是否每次調用代碼地址都是一致的。static全局羨散變數生命周期到程序或進程結束。static局部變數生命周期到程序或進程結束。
static的使用和作用
靜態全局變數。全局變數前加static,修飾全局變數為靜態全局變數,改變全局羨畢變數的可見性。靜態局部變數。局部變數前加static,修飾局部變數為靜態局部變數,改變局部變數的銷毀時期。靜態函數。函數返回類型前加static,修飾函數為靜態函數,改變函數的可見性。
類的靜態成員。類成員前加static,修飾類的成員為類的靜態成員,實現多個對象之間的數據共享,並且使用靜態成員不會破壞封裝性,也保證了安全性。類的靜態函數,類函數前加static,修飾類的函數為靜態函數,減少資源消耗,不需要實例化就可以使用。
2. C語言中變數存儲static和extern兩個關鍵字的作用分別是什麼
在C語言中,static可以用來修飾局部變數,全局變數以及函數。在不同的情況下static的作用不盡相同。
(1)修飾局部變數
一般情況下,對於局部變數是存放在棧區的,並且局部變數的生命周期在該語句塊執行結束時便結束了。但是如果用static進行修飾的話,該變數便存放在靜態數據區,其生命周期一直持續到整個程序執行結束。但是在這里要注意的是,雖然用static對局部變數進行修飾過後,其生命周期以及存儲空間發生了變化,但是其作用域並沒有改變,其仍然是一個局部變數,作用域僅限於該語句塊。
在用static修飾局部變數後,該變數只在初次運行時進行初始化工作,且只進行一次。
如:
程序執行結果為: 2
3
說明在第二次調用fun()函數時,a的值為2,並且沒有進行初始化賦值,直接進行自增運算,所以得到的結果為3.
對於靜態局部變數如果沒有進行初始化的話,對於整形變數系統會自動對其賦值為0,對於字元數組,會自動賦值為'