C語言動態(tài)存儲方式與靜態(tài)存儲方式
靜態(tài)存儲方式是指在程序運行期間由系統(tǒng)分配固定的存儲空間的方式;動態(tài)存儲方式是在程序運行期間根據(jù)需要進行動態(tài)的分配存儲空間的方式。
內存中的供用戶使用的存儲空間可以分為3部分,
- 程序區(qū)
- 靜態(tài)存儲區(qū)
- 動態(tài)存儲區(qū)
全局變量全部存放在靜態(tài)存儲區(qū)中,在程序開始執(zhí)行時給全局變量分配存儲區(qū),程序執(zhí)行完畢就釋放。
在動態(tài)存儲區(qū)存放以下數(shù)據(jù)
在C語言中,每一個變量和函數(shù)都有兩個屬性:
- 數(shù)據(jù)類型
- 數(shù)據(jù)的存儲類別。
C語言的存儲類別包括4種:
C語言局部變量的存儲類別
自動變量(auto變量)
- 函數(shù)中的局部變量,如果不專門聲明static存儲類別,都是動態(tài)地分配存儲空間的,數(shù)據(jù)存儲在動態(tài)存儲區(qū)中。自動變量用關鍵字auto做存儲類別聲明。
靜態(tài)局部變量(static局部變量)
- 函數(shù)中的局部變量的值在函數(shù)調用結束后不消失而繼續(xù)保留原值,即其占用的存儲單元不釋放,在下一次再調用該函數(shù)時,該變量已有值。
寄存器變量(register變量)
- 為提高執(zhí)行效率,允許將局部變量的值放在CPU中的寄存器中,需要用時直接從寄存器取出參加運算,不必再到內存中去存取。由于對寄存器的存取速度遠高于對內存的存取速度,因此這樣做可以提高執(zhí)行效率,這種變量叫寄存器變量,用關鍵字register作聲明。
C語言全局變量的存儲類別
在一個文件內擴展外部變量的作用域
- 如果由于某種考慮,在定義點之前的函數(shù)需要引用該外部變量,則應該在引用之前用關鍵字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 after0.04696 secondswith return value0
請按任意鍵繼續(xù). . .
-
C語言
+關注
關注
180文章
7601瀏覽量
136251 -
函數(shù)
+關注
關注
3文章
4308瀏覽量
62445 -
靜態(tài)存儲器
+關注
關注
0文章
10瀏覽量
7522
發(fā)布評論請先 登錄
相關推薦
評論