首頁  >  文章  >  後端開發  >  C語言變數的定義包含變數儲存類型和變數的什麼?

C語言變數的定義包含變數儲存類型和變數的什麼?

青灯夜游
青灯夜游原創
2020-07-27 14:39:455013瀏覽

C語言變數的定義包括變數儲存類型和變數的名稱。 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn