4.3 變量存儲類型
Turbo C2.0支持四種變量存儲類型。說明符如下:
auto static extern register
下面分別來介紹。
一、auto
auto稱為自動變量, 已在前面作了介紹, 這裡不再重復。
二、static
static稱為靜態變量。根據變量的類型可以分為靜態局部變量和靜態全程變量。
1. 靜態局部變量
它與局部變量的區別在於: 在函數退出時, 這個變量始終存在, 但不能被其它函數使用, 當再次進入該函數時, 將保存上次的結果。其它與局部變量一樣。
2. 靜態全程變量
Turbo C2.0允許將大型程序分成若干獨立模塊文件分別編譯, 然後將所有模塊的目標文件連接在一起, 從而提高編譯速度, 同時也便於軟件的管理和維護。靜態全程變量就是指只在定義它的源文件中可見而在其它源文件中不可見的變量。它與全程變量的區別是: 全程變量可以再說明為外部變量(extern), 被其它源文件使用,而靜態全程變量卻不能再被說明為外部的, 即只能被所在的源文件使用。
三、extern
extern稱為外部變量。為了使變量除了在定義它的源文件中可以使用外,還要被其它文件使用。因此,必須將全程變量通知每一個程序模塊文件,此時可用extern來說明。
例如:
文件1為file1.c 文件2為file2.c
int i, j;/*定義全程變量*/ extern int i, j;/*說明將i, j從
文件1中復制過來*/
char c; extern char c; /*將c復制過來*/
void func1(int k); func2() /*用戶定義函數*/
{
main() static float k;/*定義靜態變量*/
{ i=j*5/100;
func1(20);/*調用函數*/ k=i/1.5;
func2(); .
. .
. .
. }
}
func1(int k) /*用戶定義函數*/
{
j=k*100;
}
對於以上兩個文件file1.c和file2.c, 用Turbo C2.0的集成開發環境進行編譯連接時,首先應建立一個.prj的文件。例如file.prj, 該文件內容如下:
file1.c
file2.c
然後將file.prj的文件名寫入主菜單Project中的Project Name項中。再用F9編譯連接,就可產生一個文件名為fioe.exe的可執行文件。
外部變量和FORTRAN語言中的COMMOM定義的公共變量一樣。
四、register
register稱為寄存器變量。它只能用於整型和字符型變量。定義符register說明的變量被Turbo C2.0存儲在CPU的寄存器中, 而不是象普通的變量那樣存儲在內存中, 這樣可以提高運算速度。但是Turbo C2.0只允許同時定義兩個寄存器變量, 一旦超過兩個, 編譯程序會自動地將超過限制數目的寄存器變量當作非寄存器變量來處理。因此, 寄存器變量常用在同一變量名頻繁出現的地方。
另外, 寄存器變量只適用於局部變量和函數的形式參數, 它屬於auto型變量,因此,不能用作全程變量。定義一個整型寄存器變量可寫成:
register int a;
對於以上所介紹的變量類型和變量存儲類型將會在以後的學習中,通過例行程序中的定義、使用來逐漸加深理解。