變量的存儲方式可分為“靜態(tài)存儲”和“動態(tài)存儲”兩種。
靜態(tài)存儲變量通常是在變量定義時就分定存儲單元并一直保持不變, 直至整個程序結束。5.5.1節(jié)中介紹的全局變量即屬于此類存儲方式。動態(tài)存儲變量是在程序執(zhí)行過程中,使用它時才分配存儲單元, 使用完畢立即釋放。 典型的例子是函數(shù)的形式參數(shù),在函數(shù)定義時并不給形參分配存儲單元,只是在函數(shù)被調(diào)用時,才予以分配, 調(diào)用函數(shù)完畢立即釋放。如果一個函數(shù)被多次調(diào)用,則反復地分配、 釋放形參變量的存儲單元。從以上分析可知, 靜態(tài)存儲變量是一直存在的, 而動態(tài)存儲變量則時而存在時而消失。我們又把這種由于變量存儲方式不同而產(chǎn)生的特性稱變量的生存期。 生存期表示了變量存在的時間。 生存期和作用域是從時間和空間這兩個不同的角度來描述變量的特性,這兩者既有聯(lián)系,又有區(qū)別。 一個變量究竟屬于哪一種存儲方式, 并不能僅從其作用域來判斷,還應有明確的存儲類型說明。
在C語言中,對變量的存儲類型說明有以下四種:
auto 自動變量
register 寄存器變量
extern 外部變量
static 靜態(tài)變量
自動變量和寄存器變量屬于動態(tài)存儲方式, 外部變量和靜態(tài)變量屬于靜態(tài)存儲方式。在介紹了變量的存儲類型之后, 可以知道對一個變量的說明不僅應說明其數(shù)據(jù)類型,還應說明其存儲類型。 因此變量說明的完整形式應為: 存儲類型說明符 數(shù)據(jù)類型說明符 變量名,變量名…; 例如:
static int a,b; 說明a,b為靜態(tài)類型變量
auto char c1,c2; 說明c1,c2為自動字符變量
static int a[5]={1,2,3,4,5}; 說明a為靜整型數(shù)組
extern int x,y; 說明x,y為外部整型變量
下面分別介紹以上四種存儲類型:
一、自動變量的類型說明符為auto。
這種存儲類型是C語言程序中使用最廣泛的一種類型。C語言規(guī)定, 函數(shù)內(nèi)凡未加存儲類型說明的變量均視為自動變量, 也就是說自動變量可省去說明符auto。 在前面各章的程序中所定義的變量凡未加存儲類型說明符的都是自動變量。例如:
{ int i,j,k;
char c;
……
}等價于: { auto int i,j,k;
auto char c;
……
}
相關推薦:計算機等考二級C語言備考:C語言/C++編譯過程北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |