3 回答

TA貢獻(xiàn)12條經(jīng)驗(yàn) 獲得超5個(gè)贊
分為兩種情況:
1)全局作用域:包括全局變量和函數(shù)。C默認(rèn)是external的,也就是說,不再變量和函數(shù)前面加static的話,默認(rèn)為extern,任何其它文件都可以訪問。若加了static限定詞的話,只有本文件中的其它函數(shù)、變量可以訪問。
2)局部作用域:針對的是局部變量。若不加static,則默認(rèn)為auto,系統(tǒng)自動分配,其生命周期為定義開始到函數(shù)結(jié)束(在for或if等中定義并使用的變量,生命結(jié)束的時(shí)間為該條件或循環(huán)結(jié)束;對于標(biāo)準(zhǔn)C來說,不能在條件或循環(huán)中定義變量的,C++可以)。也就是說,你每次調(diào)用函數(shù)時(shí),系統(tǒng)會為變量重新分配存儲空間。若加static,表示該變量是靜態(tài)的,編譯時(shí)只分配一次空間,后面他的生存期和程序一樣長,即使它所在的函數(shù)被銷毀。從空間分配看,自動類變量是在堆棧中的,堆棧由系統(tǒng)自動維護(hù),而被static修飾的變量則是被安置在數(shù)據(jù)段,在編譯時(shí)就已經(jīng)確定了。

- 3 回答
- 2 關(guān)注
- 1532 瀏覽
添加回答
舉報(bào)