? ? ? ?在C語言中,根據(jù)存儲方式和表示形式,數(shù)據(jù)有常量和變量之分,就像方程有已知數(shù)和未知數(shù)一樣。那么,你知道二者的區(qū)別和應(yīng)用嗎?讓我們開始“常量和變量”之旅吧!
<一>常量:
? ? ? 常量是程序中不可改變的量,常以字面量,或者宏[#define( 在預(yù)處理就處理)]的方式出現(xiàn)。主要用于賦值或是參與計算,并且常量也是用類型的。常量主要分為數(shù)值常量、字符常量、字符串常量和符號常量四種。在這里,我先說一下字符常量和字符串常量的區(qū)別。周所周知在C語言中,字符常量就是指單引號里的單個字符,eg:‘a(chǎn)’;而字符串常量用雙引號,eg:“a”?。但兩者的存儲空間也有不同,在內(nèi)存中,字符常量只占用一個存儲空間,而字符串存儲時必須有占用一個存儲空間的結(jié)束標記'\o',所以,'a'占用一個,而"a"占用兩個;還有二者的操作功能也不相同,eg:字符常量可進行加減運算,字符串常量不能。
舉個字符常量的例子:
01 ? #include02? int main()
03? {
04? ? ? printf("a,A \n"); ? ? ? ? ? ? ? /*輸出a,A并換行*/
05? ? ? printf("123\x20\'\x20\"\n"); ? ? /*輸出123、空格、? 單引號、空格和雙引號,最后換行*/
06? ? ? return 0;
}
? ? ? 接下來說一下符號常量吧。首先,符號常量不同于變量,它的值在其作用域內(nèi)不能改變,也不能被賦值。 在拼寫習慣上,符號常量名用大寫英文標識符,而變量名用小寫英文標識符,以示區(qū)別。 定義符號常量的目的是為了提高程序的可讀性,便于程序的調(diào)試和修改。因此在定義符號常量名時,應(yīng)盡量使其表達它所代表的常量的含義。 而且符號常量對程序中用雙引號括起來的字符串,即使與符號一樣,預(yù)處理時也不做替換。
<二>變量
? ? ? ?變量用于存儲程序中可以改變的數(shù)據(jù)。其實變量就像一個存放東西的抽屜,知道了抽屜的名字(變量名),也就能找到抽屜的位置(變量的存儲單元)以及抽屜里的東西(變量的值)等。當然,抽屜里存放的東西也是可以改變的,也就是說,變量里的值也是可以變化的。
? ? ? 簡單的來說,變量的定義:類型 ? ?變量名;
? ? ? 經(jīng)過一些推敲總結(jié)出變量的4個基本屬性:
? ? ? ⑴ 變量名:一個符合規(guī)則的標識符。⑵ 變量類型:C語言中的數(shù)據(jù)類型或者是自定義的數(shù)據(jù)類型。⑶ 變量位置:數(shù)據(jù)的存儲空間位置。⑷ 變量值:數(shù)據(jù)存儲空間內(nèi)存放的值。
程序編譯時會給每個變量分配存儲空間和位置,程序讀取數(shù)據(jù)的過程其實就是根據(jù)變量名查找內(nèi)存中相應(yīng)的存儲空間,從其內(nèi)取值的過程。
? ? ? 變量的命名規(guī)則:?
a.變量名可以由字母、數(shù)字和_(下劃線)組合而成;
b.?變量名不能包含除_ 以外的任何特殊字符,如:%、# 、逗號、空格等;
c.?變量名必須以字母或_(下劃線)開頭。?變量名不能包含空白字符(換行符、空格和制表符稱為空白字符);
d.?C 語言中的某些詞(例如int 和float 等)稱為保留字,具有特殊意義,不能用作變量名。
? ? ?變量的命名,本人建議用“駝峰命名法”eg:myFirstBook。