1. 程式人生 > >關於變數作用域(內部、外部)及儲存型別(auto、static、register)的總結

關於變數作用域(內部、外部)及儲存型別(auto、static、register)的總結

可見性就是在在什麼地方可以呼叫,能呼叫的地方就是可見,而存在性,就是在什麼地方什麼時候初始化,然後使用完後在什麼地方什麼時候釋放,存在性一般是在執行時的生命週期內起作用的,這個題目裡除了static其他都是在函式結束時自動釋放了。

     一、變數的 作用域  儲存型別

一個 C 程式( *.EXE )由若干個 C 檔案( *.C )組成,一個( *.C )檔案由若干個 C 函式組成。函式內、外均可(根據需要)定義或宣告變數。

【 按作用域劃分 】 內部變數 外部變數

內部變數 :在函式內定義變數稱為內部變數(區域性),若為自動儲存型別,預設初始化值為不確定值,若為static型別則為0或空字元;

外部變數: 在函式外定義變數稱為外部變數(全域性),預設初始化值為0或空字元;

二者區別 定義出現的位置

【 按儲存型別劃分 】 auto、static/register(動態、靜態/暫存器變數)

變數 定義 一般 格式 : [ 儲存類 

型 ] 資料型別 變量表

auto :動態:( 儲存類 型 預設時,系統預設為動態;)

      位置:動態區

特點: 程式執行時動態分配,每次呼叫時都重新賦初值,呼叫不賦初值時,其值不確定。

static :靜態:

       位置:靜態區

特點: 程式編譯時靜態分配,每次呼叫時不再重新賦初值,保留最後一次呼叫的值。

二者區別 

儲存位置不同,

register :暫存器:

位置:在CPU內;

特點:速度快;

補充說明: 一般不用認為進行 儲存類 型宣告,系統編譯時,根據需要自動宣告 register 型別)

二、Static:用於變數和函式時的不同意義

1. Static:用於變數時,共性是:靜態儲存

  (1) 用於外部變數:代表是本*.C檔案內私有變數,且靜態儲存

               其他*.C(即使用extern宣告也)不能呼叫

  (2)用於內部變數:代表是本函式內私有變數,且靜態儲存

2. Static:用於函式時,代表是本*。C檔案私有函式,其他*。C(即使用extern宣告也)不能呼叫

  Static:用於外部變數或函式時,代表作用域;用於內部變數時,代表生存週期