關於變數作用域(內部、外部)及儲存型別(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:用於外部變數或函式時,代表作用域;用於內部變數時,代表生存週期