內(nèi)存分區(qū)圖示
各個(gè)內(nèi)存區(qū)域的說(shuō)明
代碼區(qū)(Code)
-- 代碼不變的
-- 分配, 釋放方式 : 編譯器分配內(nèi)存, 程序退出時(shí)系統(tǒng)自動(dòng)釋放內(nèi)存;
-- 存放內(nèi)容 : 存放函數(shù)體的二進(jìn)制代碼(所有的可執(zhí)行代碼)叙甸。
比如: int a;就不是可執(zhí)行代碼碾牌,而是只在內(nèi)存中申請(qǐng)了一個(gè)
空間而已,
a=10赏殃;是可執(zhí)行代碼;
靜態(tài)區(qū)
-- 存放的是靜態(tài)變量static 和全局變量
-- 分配, 釋放方式 : 編譯器分配內(nèi)存, 程序退出時(shí)系統(tǒng)自動(dòng)釋放內(nèi)存;
-- Static
static 關(guān)鍵字不僅可以用來(lái)修飾變量鉴扫,還可以用來(lái)修飾函數(shù)嘶伟。在使用
static 關(guān)鍵字修飾變量時(shí),我們稱此變量為靜態(tài)變量盛泡,只初始化1次闷祥。
全局靜態(tài)變量
--靜態(tài)存儲(chǔ)區(qū)
--默認(rèn)初始化為0
--全局靜態(tài)變量在聲明他的文件之外是不可見(jiàn)的傲诵。準(zhǔn)確地講從定義
--之處開(kāi)始到文件結(jié)尾。
局部靜態(tài)變量
--靜態(tài)存儲(chǔ)區(qū)
--默認(rèn)初始化為0
--作用域仍為局部作用域
Static局部變量&全局變量 總結(jié)
-- 局部變量 加上 static , 相當(dāng)于將局部變量的生命周期擴(kuò)大到了整個(gè)文件, 作用域不改變;
-- 全局變量 : 全局變量 加上 static , 相當(dāng)于將全局變量的作用域縮小到了單個(gè)文件, 生命周期是整個(gè)程序的周期;
棧區(qū) (stack)
-- 分配, 釋放方式 : 由編譯器自動(dòng)分配 和 釋放;
-- 存放內(nèi)容 : 局部變量和形式參數(shù);
-- 特點(diǎn) : 具有 后進(jìn)先出 特性, 空間小拴竹,容易發(fā)生棧溢出。
堆區(qū)(heap)--之后詳解
-- 分配, 釋放方式 : 由程序員手動(dòng) 分配(malloc) 和 釋放(free),[誰(shuí)申請(qǐng)誰(shuí)
釋放]
-- 存放內(nèi)容 : 存放程序運(yùn)行中 動(dòng)態(tài)分配 內(nèi)存的數(shù)據(jù);
-- 特點(diǎn) : 不需要滿足先進(jìn)后出的結(jié)構(gòu)栓拜,而且可使用空間較棧區(qū)大的多,
大小不固定, 可能會(huì)動(dòng)態(tài)的 放大 或 縮小;
-- 堆區(qū)使用不善會(huì)導(dǎo)致內(nèi)存泄漏
流程控制
if語(yǔ)句
單分支
if(條件表達(dá)式)
{...}
當(dāng)條件表達(dá)式為真的時(shí)候執(zhí)行幕与,假的時(shí)候不執(zhí)行
if ...else
if ...else if...else
注意:else后面沒(méi)有小括號(hào)挑势,當(dāng)有多個(gè)else的時(shí)候,else總是和上方最近的if配對(duì)啦鸣。
switch
switch(表達(dá)式){
case 常量表達(dá)式1: 語(yǔ)句1;
case 常量表達(dá)式2: 語(yǔ)句2;
…
case 常量表達(dá)式n: 語(yǔ)句n;
default: 語(yǔ)句n+1;
}
注意:switch括號(hào)里面可以是整型潮饱、字符型、枚舉型表達(dá)式诫给,而case后面只能是常量表達(dá)式(整數(shù)或者是結(jié)果為整數(shù)的表達(dá)式香拉,但不能包含任何變量),而且后面的常量結(jié)果不能相同中狂。
while do...while for
參照課上筆記部分凫碌,有詳解。
數(shù)組
語(yǔ)法部分參照課件胃榕,未完待續(xù)day04