C语言 | 变量的存储方式
C語言動態存儲方式與靜態存儲方式
靜態存儲方式是指在程序運行期間由系統分配固定的存儲空間的方式;動態存儲方式是在程序運行期間根據需要進行動態的分配存儲空間的方式。
內存中的供用戶使用的存儲空間可以分為3部分,
程序區
靜態存儲區
動態存儲區
全局變量全部存放在靜態存儲區中,在程序開始執行時給全局變量分配存儲區,程序執行完畢就釋放。
在動態存儲區存放以下數據
函數形式參數。
函數中定義的沒有用關鍵字static聲明的變量,即自動變量。
函數調用時的現場保護和返回地址等。
在C語言中,每一個變量和函數都有兩個屬性:
數據類型
數據的存儲類別。
C語言的存儲類別包括4種:
自動的(auto)
靜態的(static)
寄存器的(register)
外部的(extern)。
C語言局部變量的存儲類別
自動變量(auto變量)
函數中的局部變量,如果不專門聲明static存儲類別,都是動態地分配存儲空間的,數據存儲在動態存儲區中。自動變量用關鍵字auto做存儲類別聲明。
靜態局部變量(static局部變量)
函數中的局部變量的值在函數調用結束后不消失而繼續保留原值,即其占用的存儲單元不釋放,在下一次再調用該函數時,該變量已有值。
寄存器變量(register變量)
為提高執行效率,允許將局部變量的值放在CPU中的寄存器中,需要用時直接從寄存器取出參加運算,不必再到內存中去存取。由于對寄存器的存取速度遠高于對內存的存取速度,因此這樣做可以提高執行效率,這種變量叫寄存器變量,用關鍵字register作聲明。
C語言全局變量的存儲類別
在一個文件內擴展外部變量的作用域
如果由于某種考慮,在定義點之前的函數需要引用該外部變量,則應該在引用之前用關鍵字extern對該變量作“外部變量聲明”,表示把該外部變量的作用域擴展到此位置。
將外部變量的作用域擴展到其他文件。
將外部變量的作用域限制在本文件中。
注意,用auto、register和static聲明變量時,是在定義變量的基礎上加上這些關鍵字,而不能單獨使用。
C語言存儲類別案例
#include int?main() {auto?int?num1=10;register?int?num2=20;static?int?num3=30;printf("%d\n",num1);printf("%d\n",num2);printf("%d\n",num3);return?0; }編譯運行結果:
10 20 30-------------------------------- Process exited after?0.04696?seconds?with?return?value?0 請按任意鍵繼續. . .聲明:
本文于網絡整理,版權歸原作者所有,如來源信息有誤或侵犯權益,請聯系我們刪除或授權事宜。
總結
以上是生活随笔為你收集整理的C语言 | 变量的存储方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 苹果电脑充电器没带(苹果电脑充电器没带充
- 下一篇: 手机怎么控制家里的wifi路由器如何管理