3. 變量
4.1 變量說明
Turbo C2.0規定所有變量在使用前都必須中以說明。一條變量說明語句由數據類型和其後的一個或多個變量名組成。變量說明的形式如下:
類型 <變量表>;
這裡類型是指Turbo C2.0的有效數據類型。變量表是一個或多個標識符名, 每個標識符之間用","分隔。
例如:
int i, j, k; unsigned char c, str[5], *p;
4.2 變量種類
變量可以在程序中三個地方說明: 函數內部、函數的參數定義中或所有的函數外部。根據所定義位置的不同, 變量可分為局部變量、形式參數和全程變量。
一、局部變量
局部變量是指在函數內部說明的變量(有時也稱為自動變量)。用關鍵字auto進行說明,當auto省略時,所有的非全程變量都被認為是局部變量,所以auto實際上從來不用。
局部變量在函數調用時自動產生, 但不會自動初始化,隨函數調用的結束,這個變量也就自動消失了, 下次調用此函數時再自動產生,還要再賦值,退出時又自動消失。
二、形式參數
形式參數是指在函數名後面的小括號裡定義的變量,用於接受來自調用函數的參數。形式參數在函數內部可以象其它局部變量那樣來作用。
例如:
puthz(int x, int y, int color, char *p)
{
int i, j, k; /*定義局部變量*/
<程序體>
}
其中x, y, color, *p為函數的形式參數, 不需要再進行說明就可在該函數內直使用。
三、全程變量
全程變量是指在所有函數之外說明的變量, 它在整個程序內部者是"可見的",可以被任何一個函數使用, 並且在整個程序的運行中都保留其值。全程變量只要滿足在使用它以前和函數以外這兩個條件, 可在程序的任何位置進行說明,習慣上通常在程序的主函數前說明。
例如:
#include<stdio.h>
int test; /*定義全程變量*/
void f1(int x, float y); /*子函數說明*/
void f2(void); /*子函數說明*/
main()
{
test=5; /*給全程變量賦值*/
f1(20, 5.5); /*調用有形式參數的子函數f1()*/
/*test的值變成115*/
f2(); /*調用f2(), test的值變為1150*/
}
void f1(int x, float y)
{
float z; /*z定義為局部變量*/
z=x*y; /*計算*/
test=test+z;
}
void f2(void)
{
int count=10; /*定義局部變量並初始化*/
test=test*count;
}
由於全程變量可被整個程序內的任何一個函數使用,所以可作為函數之間傳遞參數的手段,但全程變量太多時,內存開銷變大。