c语言局部变量存在什么区_C语言程序设计变量运用指南 C语言局部变量的存储方式和生存期...
動(dòng)態(tài)存儲(chǔ)方式與靜態(tài)存儲(chǔ)方式
從變量的作用域(即從空間)的角度來觀察,變量可以分為全局變量和局部變量。從變量值存在的時(shí)間(即生存期)來觀察,有的變量在程序運(yùn)行的整個(gè)過程都是存在的,而有的變量則是在調(diào)用其所在的麗數(shù)時(shí)才臨時(shí)分配存儲(chǔ)單元,而在函數(shù)調(diào)用結(jié)束后該存儲(chǔ)單元就馬上釋放了,變量不存在了。
變量的存儲(chǔ)有兩種不同的方式:靜態(tài)存儲(chǔ)方式和動(dòng)態(tài)存儲(chǔ)方式。靜態(tài)存儲(chǔ)方式是指在程序運(yùn)行期間由系統(tǒng)分配固定的存儲(chǔ)空間的方式,而動(dòng)態(tài)存儲(chǔ)方式則是在程序運(yùn)行期間根據(jù)需要進(jìn)行動(dòng)態(tài)的分配存儲(chǔ)空間的方式。
內(nèi)存中的供用戶使用的存儲(chǔ)空間可以分為三個(gè)部分:
(1)程序區(qū);
(2)靜態(tài)存儲(chǔ)區(qū);
(3)動(dòng)態(tài)存儲(chǔ)區(qū)。
數(shù)據(jù)分別存放在靜態(tài)存儲(chǔ)區(qū)和動(dòng)態(tài)存儲(chǔ)區(qū)中。
全局變量全部存放在靜態(tài)存儲(chǔ)區(qū)中,在程序開始執(zhí)行時(shí)給全局變量分配存儲(chǔ)區(qū),程序執(zhí)行完畢就釋放。在程序執(zhí)行過程中它們占據(jù)固定的存儲(chǔ)單元,而不是動(dòng)態(tài)地進(jìn)行分配和釋放。
在動(dòng)態(tài)存儲(chǔ)區(qū)中存放以下數(shù)據(jù):
(1)函數(shù)形式參數(shù)。在調(diào)用函數(shù)時(shí)給形參分配存儲(chǔ)空間。
(2)函數(shù)中定義的沒有用關(guān)鍵字static聲明的變量,即自動(dòng)變量。
(3)函數(shù)調(diào)用時(shí)的現(xiàn)場保護(hù)和返回地址等。
對以上這些數(shù)據(jù),在函數(shù)調(diào)用開始時(shí)分配動(dòng)態(tài)存儲(chǔ)空間,函數(shù)結(jié)束時(shí)釋放這些空間。在程序執(zhí)行過程中,這種分配和釋放是動(dòng)態(tài)的。
局部變量的存儲(chǔ)類別
1.自動(dòng)變量(auto變量)
函數(shù)中的局部變量,如果不專門聲明為static(靜態(tài))存儲(chǔ)類別,都是動(dòng)態(tài)地分配存儲(chǔ)空
間的,數(shù)據(jù)存儲(chǔ)在動(dòng)態(tài)存儲(chǔ)區(qū)中。函數(shù)中的形參和在函數(shù)中定義的局部變量(包括在復(fù)合語
句中定義的局部變量),都屬于此類。在調(diào)用該函數(shù)時(shí),系統(tǒng)會(huì)給這些變量分配存儲(chǔ)空間,在
函數(shù)調(diào)用結(jié)束時(shí)就自動(dòng)釋放這些存儲(chǔ)空間。因此這類局部變量稱為自動(dòng)變量。自動(dòng)變量用
關(guān)鍵字auto作存儲(chǔ)類別的聲明。
2.靜態(tài)局部變量(static局部變量)
有時(shí)希望函數(shù)中的局部變量的值在函數(shù)調(diào)用結(jié)束后不消失而繼續(xù)保留原值。即其的存儲(chǔ)單元不釋放,在下一次再調(diào)用該函數(shù)時(shí),該變量已有值(就是上一次的數(shù)調(diào)用結(jié)束時(shí)的值)。這時(shí)就應(yīng)該指定該局部變量為“靜態(tài)局部變量”,用關(guān)鍵字static進(jìn)行聲明。
局部靜態(tài)變量使用舉例:
# include int main(){int f(int);int a=2,i;for(i=0;i<3;i++)printf(" %d" ,f(a));return 0;}int f(int a){ autoint b=0;static c=3;b=b+1;c=c+1;return(a+ b+c); }輸出結(jié)果:
789數(shù)據(jù)存儲(chǔ)設(shè)備
小結(jié)
1.自動(dòng)變量關(guān)鍵字auto可以省略,不寫auto,則隱含指定為自動(dòng)存儲(chǔ)類別。
2.C語言的存儲(chǔ)類別包括:自動(dòng)的(auto)、靜態(tài)的(static)、寄存器的(register)、外部的(extern)。
關(guān)注我即可更快獲得更多精彩知識(shí),歡迎大家關(guān)注、評論、轉(zhuǎn)發(fā)、點(diǎn)贊;一起進(jìn)步,共同交流~
總結(jié)
以上是生活随笔為你收集整理的c语言局部变量存在什么区_C语言程序设计变量运用指南 C语言局部变量的存储方式和生存期...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dedecms mysql 支持_安装d
- 下一篇: mysql迁移之后读取速度变慢_如何解决