3 回答

飛奔的王麻子
TA貢獻(xiàn)12條經(jīng)驗 獲得超5個贊
分為兩種情況:
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é)束的時間為該條件或循環(huán)結(jié)束;對于標(biāo)準(zhǔn)C來說,不能在條件或循環(huán)中定義變量的,C++可以)。也就是說,你每次調(diào)用函數(shù)時,系統(tǒng)會為變量重新分配存儲空間。若加static,表示該變量是靜態(tài)的,編譯時只分配一次空間,后面他的生存期和程序一樣長,即使它所在的函數(shù)被銷毀。從空間分配看,自動類變量是在堆棧中的,堆棧由系統(tǒng)自動維護,而被static修飾的變量則是被安置在數(shù)據(jù)段,在編譯時就已經(jīng)確定了。
- 3 回答
- 2 關(guān)注
- 1553 瀏覽
添加回答
舉報
0/150
提交
取消