天天看點

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<stdio.h>

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

請按任意鍵繼續. . .

繼續閱讀