C語言變數的定義包括變數儲存類型和變數的名稱。 C語言定義變數的格式:“資料型別 變數名稱;”,「資料型別」表示想要儲存什麼類型的數據,而「變數名稱」就是你想給這個變數取個什麼名字,通常都是用字母。
變數的定義
定義變數的格式非常簡單,如下所示:
数据类型 变量名;
首先要強調的一點是:最後的分號千萬不要丟了。變數的定義是一個語句,我們說過,語句都是以分號結尾的。
「資料類型」表示想要儲存什麼類型的資料就定義什麼類型的變數。想要儲存整數就定義成int 型;想要儲存小數就定義成float 型或double 型;想要儲存字元就定義成char 型…
「變數名稱」就是你想給這個變數取個什麼名字,通常都是用字母。例如:
int i;
就表示定義了一個整數變數 i。
變數名稱的命名規則
在定義變數時,變數名稱可以是字母、數字和底線的組合。但也不是隨便的組合,要注意以下幾個命名規則:
1) 變數名的開頭必須是字母或底線,不能是數字。實際程式設計中最常用的是以字母開頭,而以下劃線開頭的變數名稱是系統專用的。
隨便打開一個頭檔就會看到,它裡面所有的變數名稱、巨集名、函數名全是以下的劃線開始。
所以為了避免與系統定義的名字產生衝突,在程式設計的時候,除非要求這麼定義,否則永遠不要使用底線作為一個變數名稱的開頭。
2) 變數名中的字母是區分大小寫的。例如 a 和 A 是不同的變數名,num 和 Num 也是不同的變數名。
3) 變數名稱絕對不可以是C語言關鍵字,這點一定要記住!
4) 變數名稱中不能有空格。這個可以這樣理解:因為上面我們說過,變數名稱是字母、數字、底線的組合,沒有空格這一項。
變數的賦值
那麼變數定義好之後怎麼將數放到這個變數裡面呢?首先要理解的是,將一個數字放到一個變數中,這個動作叫做「賦值」。 「賦」即「給予」的意思,所以「給變數賦值」意思是將一個值傳給一個變數。那怎麼賦值呢?是透過賦值運算子=,賦值的格式是:
变量名 = 要赋的值;
它的意思是將=右邊的數字賦給左邊的變數。例如:
i = 3;
這就表示將 3 賦給了變數 i,此時 i 就等於 3 了。
這裡要注意的是,這裡的=跟數學中的「等於號」是不一樣的。在剛開始學習C語言的時候,在這一點上大家很難從數學的思維中轉變過來。在C語言中=表示賦值,即將右邊的值賦給左邊的變量,而不是左邊的變數等於右邊的值。
那C語言中有沒有表示相等的運算子呢?這就是雙等號==。這個運算子就與數學中的「等於」是同一個意思了。
以上就是變數的定義和賦值,它們是分成兩個步驟寫的。也可以將它們合成一步,事實上,在實際編程中用得最多的也是合而為一的寫法。那怎麼合在一起呢?很簡單,形式如下:
資料型別 變數名= 要賦的值;
例如:
int i = 3;
就表示定義了一個變數i,並且把3 賦給這個變數。它與
int i; i =3;
是等價的。
在定義變數時也可以一次定義多個變量,例如:
int i, j;
這就表示定義了變數 i 和 j。這裡要強調的是,當同時定義多個變數時,變數之間是用逗號隔開的,千萬別寫成分號。這是很多新手最容易犯的錯誤,即將逗號和分號記混了。
同樣也可以在定義多個變數的同時給它們賦值:
int i = 3, j = 4;
中間還是用逗號隔開,最後別忘記輸入分號。
最後要注意的是,在較老的C89/C90 標準(也稱為ANSI C 標準)中,變數只能在程式的開頭定義,或者說變數定義的前面不能有其他非宣告或非定義的語句。例如在C語言中像下面這種寫法就是錯誤的:
# include <stdio.h> int main(void) { int i; i = 3; int j = 4; //这句是错误的,因为在它前面有一个给变量i赋值的非定义语句 return 0; }
在VC 6.0 或VS2010 下編譯的時候會提示下面的錯誤:
error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
但是這種寫法在.cpp檔案(C 原始檔)中是允許的,.cpp檔中可以在程式的任意位置定義變數。
其實這跟語言本身沒有什麼關係,並不是說C語言中變數就不能定義在程式中間。這其實是與標準有關係的,有些編譯器使用的是C89 標準,C89 標準要求所有宣告(例如函數宣告、變數定義)必須寫在程式、函數或複合語句的開頭,而C99 的新特性允許語句和聲明依任意順序排列,只要遵循「先聲明後使用」的原則就行。
因為VC 6.0 和VS2010 遵循的是C89 標準,或者說它不能完全支援C99 標準,所以它不允許將變數定義在程式中間;而Linux 中GCC 編譯器遵循的是C99 標準,所以同樣是.c文件,同樣是編寫C語言,它就可以將變數定義在程式的任意位置,只要是在使用位置之前即可。
其實 C99 標準是比較好的,變數需要的時候才定義,縮短了它的生命週期,節省了記憶體。因為只要定義變量,系統就會為它分配記憶體空間,所以如果在前面定義了但是到最後才使用它,那麼在使用之前它一直佔著內存不放,有點浪費。
但儘管如此,大家在程式設計的時候還是盡量按照 C89 的標準編寫,即使在完美支援 C99 標準的編譯器中也最好不要將聲明寫在程式的中間。因為 C89 歷時較長,現在它仍然是主流,許多編譯器仍然只支援 C89 標準或不能很好地支援 C99 標準。所以以 C89 標準來寫可移植性更強。
上面提到“複合語句”,在複合語句中也可以定義變數。所謂語句就是以分號結尾的,而複合語句就是多個語句組合在一起的語句。在C語言中,用大括號{ }括起來的多個語句稱為複合語句。
複合語句在流程控制中用得特別多,例如後面將要學習的 if、for、while 一般都是跟複合語句的。此時在這些複合語句中也可以定義變量,但是也只能定義在它的開頭。主函數 main 下面也是用大括號括起來的,所以主函數 main 下的函數體本質上也是複合語句,是一個大的複合語句。
所以它們還是有共通性的,也就是說,在C語言中,只要是用大括號{ }括起來的,那麼在它的開頭都可以定義變數。而且這些在大括號中定義的變數都稱為局部變數。此外,在大括號外面也可以定義變量,叫做全域變數。
推薦:《c語言教學》
以上是C語言變數的定義包含變數儲存類型和變數的什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!