auto
自動儲存類別
關於動態儲存方式與靜態動態儲存方式
從變數的作用域(即從空間)角度來分,可以分為全域性變數和區域性變數。
從另一個角度,從變數值存在的作時間(即生存期)角度來分,可以分為靜態儲存方式和動態儲存方式。
靜態儲存方式:是指在程式執行期間分配固定的儲存空間的方式。
動態儲存方式:是在程式執行期間根據需要進行動態的分配儲存空間的方式。
使用者儲存空間可以分為三個部分:
程式區;
靜態儲存區;
動態儲存區。
全域性變數全部存放在靜態儲存區,在程式開始執行時給全域性變數分配儲存區,程式行完畢就釋放。在程式執行過程中它們佔據固定的儲存單元,而不動態地進行分配和釋放。
動態儲存區存放以下資料:
函式形式引數;
自動變數(未加static宣告的區域性變數);
函式呼叫實的現場保護和返回地址。
對以上這些資料,在函式開始呼叫時分配動態儲存空間,函式結束時釋放這些空間。
在C語言中,每個變數和函式有兩個屬性:資料型別和資料的儲存類別。
auto變數
函式中的區域性變數,如不專門宣告為static儲存類別,都是動態地分配儲存空間的,資料儲存在動態儲存區中。
函式中的形參和在函式中定義的變數(包括在複合語句中定義的變數),都屬此類,在呼叫該函式時系統會給它們分配儲存空間,在函式呼叫結束時就自動釋放這些儲存空間。這類區域性變數稱為自動變數。自動變數用關鍵字auto作儲存類別的宣告。例如:int f(int a){ /* 定義f函式,a為引數 */ auto int b,c=3; /*定義b,c自動變數*/ /* …… */}
a是形參,b,c是自動變數,對c賦初值3。執行完f函式後,自動釋放a,b,c所佔的儲存單元。
關鍵字auto可以省略,auto不寫則隱含定為“自動儲存類別”,屬於動態儲存方式。
用static宣告區域性變數
有時希望函式中的區域性變數的值在函式呼叫結束後不消失而保留原值,這時就應該指定區域性變數為“靜態區域性變數”,用關鍵字static進行宣告。
【例8-15】考察靜態區域性變數的值。
#include
auto
自動儲存類別
關於動態儲存方式與靜態動態儲存方式
從變數的作用域(即從空間)角度來分,可以分為全域性變數和區域性變數。
從另一個角度,從變數值存在的作時間(即生存期)角度來分,可以分為靜態儲存方式和動態儲存方式。
靜態儲存方式:是指在程式執行期間分配固定的儲存空間的方式。
動態儲存方式:是在程式執行期間根據需要進行動態的分配儲存空間的方式。
使用者儲存空間可以分為三個部分:
程式區;
靜態儲存區;
動態儲存區。
全域性變數全部存放在靜態儲存區,在程式開始執行時給全域性變數分配儲存區,程式行完畢就釋放。在程式執行過程中它們佔據固定的儲存單元,而不動態地進行分配和釋放。
動態儲存區存放以下資料:
函式形式引數;
自動變數(未加static宣告的區域性變數);
函式呼叫實的現場保護和返回地址。
對以上這些資料,在函式開始呼叫時分配動態儲存空間,函式結束時釋放這些空間。
在C語言中,每個變數和函式有兩個屬性:資料型別和資料的儲存類別。
auto變數
函式中的區域性變數,如不專門宣告為static儲存類別,都是動態地分配儲存空間的,資料儲存在動態儲存區中。
函式中的形參和在函式中定義的變數(包括在複合語句中定義的變數),都屬此類,在呼叫該函式時系統會給它們分配儲存空間,在函式呼叫結束時就自動釋放這些儲存空間。這類區域性變數稱為自動變數。自動變數用關鍵字auto作儲存類別的宣告。例如:int f(int a){ /* 定義f函式,a為引數 */ auto int b,c=3; /*定義b,c自動變數*/ /* …… */}
a是形參,b,c是自動變數,對c賦初值3。執行完f函式後,自動釋放a,b,c所佔的儲存單元。
關鍵字auto可以省略,auto不寫則隱含定為“自動儲存類別”,屬於動態儲存方式。
用static宣告區域性變數
有時希望函式中的區域性變數的值在函式呼叫結束後不消失而保留原值,這時就應該指定區域性變數為“靜態區域性變數”,用關鍵字static進行宣告。
【例8-15】考察靜態區域性變數的值。
#include