標(biāo)題: C語言變量的作用域與存儲類型 [打印本頁]
作者: 乖寶寶54 時間: 2020-2-15 22:36
標(biāo)題: C語言變量的作用域與存儲類型
1 變量的定義三方面:
(1)數(shù)據(jù)類型:占用內(nèi)存空間大小(int,double等)
(2)作用域:有效性范圍
(3)存儲類型:在內(nèi)存的存儲方式
- 這里又引入一個概念-“生存期”,即變量在程序中的建立和消亡時間
存儲類型決定變量的生存期和作用域
2 在內(nèi)存中,供用戶使用的三種空間:
(1)程序區(qū):存放代碼
(2)靜態(tài)和動態(tài)存儲區(qū):存放數(shù)據(jù)
a.靜態(tài)存儲區(qū):在編譯時就分配了內(nèi)存空間,在整個程序執(zhí)行中,內(nèi)存單元一直保持到程序結(jié)束才釋放
b.動態(tài)存儲區(qū):只有當(dāng)程序執(zhí)行到變量所在的函數(shù)被調(diào)用時,系統(tǒng)才為其分配內(nèi)存空間,函數(shù)調(diào)用結(jié)束,變量即被釋放,
| 何時分配內(nèi)存空間 | 何時釋放 | 生存期 |
| 靜態(tài)存儲區(qū) | 在程序編譯時 | 程序結(jié)束 | 整個程序的運行期間 |
| 動態(tài)存儲區(qū) | 只有當(dāng)程序執(zhí)行到變量所在的函數(shù)被調(diào)用時 | 函數(shù)調(diào)用結(jié)束 | 函數(shù)的調(diào)用期間 |
3 變量的分類
(1)局部變量:在一個函數(shù)內(nèi)部或者某個復(fù)合語句內(nèi)部定義的變量
(2)全局變量:在所有函數(shù)外部定義的變量。(默認初值為0)
| 作用域 | 存放區(qū)域 | 特點 |
| 局部變量 | 局限于定義它的函數(shù)或復(fù)合語句 | 動態(tài)存儲區(qū) | 在不同的函數(shù)中允許同名, 如果變量名相同,則當(dāng)前局部變量優(yōu)先 |
| 全局變量 | 從定義變量的位置開始到源程序結(jié)束 | 靜態(tài)存儲區(qū) |
- 若局部變量與全局變量同名,則局部變量優(yōu)先,即在該函數(shù)或復(fù)合語句內(nèi),全局變量不起作用;
- 如果要在變量定義之前使用它,需用extern加以聲明可擴展全局變量作用域;
|
作者: karolyte 時間: 2020-2-16 12:12
受教了!
作者: 尼古拉斯-趙四 時間: 2020-2-18 19:34
局部變量一定存在動態(tài)存儲區(qū),全局變量一定存在靜態(tài)存儲區(qū),這句話對嗎
| 歡迎光臨 (http://m.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |