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