變量在程序運(yùn)行時(shí)值可以改變,其功能是存儲數(shù)據(jù),變量的類型決定了變量在內(nèi)存中的大小。在C語言中,變量名作為標(biāo)識符的一種,命名原則都和標(biāo)識符是一樣的;即變量由字母、數(shù)字和下劃線組成且不能以數(shù)字開頭大小寫敏感。
變量的類型也就是數(shù)據(jù)的類型(在數(shù)據(jù)類型章節(jié)已描述)比如,char、int、long、float、double等基本類型;當(dāng)然也可以是枚舉、結(jié)構(gòu)體、共用體、空類型、以及指針類型等,后續(xù)的章節(jié)會詳細(xì)說明到這幾種類型。
那么在C語言中如何定義一個(gè)變量呢?可以參考下面的格式定義變量,type表示被定義的變量類型,variables_list是被定義變量列表,列表中的各個(gè)變量用“,”分開,在C語言中,語句都是以“;”作為語句結(jié)束。
type variables_list;
例如:
//定義兩個(gè)整型變量a和b
int a,b;
//定義兩個(gè)單精度浮點(diǎn)型變量f1和f2
float f1, f2;
//定義兩個(gè)雙精度浮點(diǎn)型變量num1和num2
double num1, num2;
當(dāng)然在定義變量語句時(shí),同時(shí)也可以對所定義的變量賦初始值。
//定義兩個(gè)整型變量a和b, 初始值分別為1和2
int a=1, b=2;
//定義兩個(gè)單精度浮點(diǎn)型變量f1和f2, 初始值分別為1.1和2.2
float f1=1.1, f2=2.2;
//定義了兩個(gè)雙精度浮點(diǎn)型變量num1和num2,初始值分別為=1.111和2.222
double num1=1.111, num2=2.222;
在工程中需要格外注意的一點(diǎn),對新定義的變量在使用前一定要進(jìn)行初始化,給新定義一個(gè)合理的初始值,這個(gè)尤為關(guān)鍵。否則,可能會造成相當(dāng)嚴(yán)重的系統(tǒng)bug。
在C語言中,有以下幾種類型的變量:
- 局部變量(local variable):在函數(shù)或語句塊中聲明的變量,,局部變量必須在語句塊的開頭聲明。
- 全局變量(global variable):在函數(shù)或語句塊之外聲明的變量,它對文件中的任何函數(shù)有效,但也需要在開頭對其聲明。
- 靜態(tài)變量(static variable):使用static關(guān)鍵字聲明的變量,多次函數(shù)調(diào)用時(shí)會保留其值。
- 自動變量(automatic variable):默認(rèn)情況在語句塊聲明的所有變量都是自動變量,我們可以使用auto關(guān)鍵字聲明自動變量。
- 外部變量(external variable):在多個(gè)源文件中可以使用外部變量共享一個(gè)變量,在需要使用這個(gè)“共享變量”的源文件里我們可以使用extern來聲明外部變量。外部變量通常也是全局變量。
//file1.c
int e = 10;
//file2.c
int a = 1; //全局變量
extern int e; //外部變量
int function()
{
int b = 2; //局部變量
static int c = 3; //靜態(tài)變量
auto d = 0; //自動變量
}