1. 程式人生 > >C語言入門教程-(4)常量和變數

C語言入門教程-(4)常量和變數

1.常量和變數的概念

程式執行過程中其值不能發生改變的量叫做常量,其值能發生改變的量叫做變數。常量可以直接使用,而變數則必須先定義後才能使用,否則編譯器會報錯。

2.常量和變數的命名規範

在介紹常量和變數的命名規範之前,我們先了解一下什麼是識別符號和關鍵字。

1)識別符號

識別符號,用來識別符號號常量名、變數名、函式名、陣列名、檔名、類名、物件名等。簡單的將就是大家取的名字~~有效識別符號的構成規則如下:

  • 1)第一個字元必須是字母(大小寫都行)或下劃線,不能是數字;

  • 2)後跟字母(大小寫都行)、下劃線或數字組成;

  • 3)識別符號中的大小寫字母有區別。如,變數sum,Sum,SUM代表三個不同的變數;

  • 4)不能與編譯系統已經預定義的、具有特殊用途的保留識別符號(即關鍵字)同名。比如,不能將識別符號命名int,char,float,break,case,for,while,return等等;
    下面列出幾個有效的識別符號:

teemo    
Garen
move_name
dj8023  
_temp  
i
the_hero_is_Garen

下面列出幾個無效的識別符號:

8times    //第一個字元必須是字母(大小寫都行)或下劃線,不能是數字。
price/tea    //後跟字母(大小寫都行)、下劃線或數字組成,/不是屬於之中。
my name    //含有空格
x+y    //包含了'+'號
int    //C語言程式中的關鍵字

2)關鍵字

C語言中具有特殊含義的英文單詞,通常用於構成語句,儲存資料,定義資料型別等。下面列出了C語言中的一些保留字。這些保留字不能作為常量名、變數名或其他識別符號名稱。

  • 1)基本資料型別
    int:宣告整數型別
    float:宣告浮點型
    double:宣告雙精度浮點型
    char:宣告字元型別
    void:空型別,宣告函式無返回值或無引數

  • 2)流程控制
    條件判斷:if、else、switch、case、default等
    迴圈:while、do、for、break、continue
    返回:return

在本節中,先了解一下就行,有很多不明白的關鍵字後面會講到。

3)命名規範

首先,必須是有效的識別符號。在這個基礎上,我們使用的命名最好能做到看名字就明白它表示什麼。如果要使用一個變數來表示teemo的血量,我們可以將其命名為teemo_hp或者teemoHp,而不是隨便的命名為a或者b之類的。遇到兩個或者更多的單片語成的名稱,我們通常用下劃線字元將它們連線起來,或者從第二單詞開始將每一個單詞的第一個字母大寫。

還有一些程式設計師可能會在變數中加入描述變數型別或者內容的字首。例如,可以將整型變數teemoHp命名為nTeemoHp,其中n表示整數值。這樣做的好處是在你遇到這個變數的時候,可以很直接的知道這個變數的型別。常用的幾種字首有:c(表示單個字元)、p(表示指標)等。另外,常量的識別符號習慣用大寫字母表示,變數的識別符號習慣用小寫字母表示。單下劃線打頭的識別符號一般代表標準資料庫的變數,雙下劃線打頭的識別符號一般代表編譯器的變數。

關於命名,想說的是,命名可以根據自己的需要、喜好和個人風格來使用,但起碼要保證一個程式裡面的風格是一致性的。在團隊共同開發中,則需要按照規範進行命名。規範的命名不僅可以讓自己以後看的明白,也利於給團隊其他人維護程式碼。

3.常量

1)直接常量

直接常量又可以叫做字面常量,通過資料來直接表現。在C語言中,編譯器會自動根據字面常量的表示形式確定其型別。例如:

y = x + 3;

在上面的程式中,3將會被編譯器作為int型別的常量。再例如:

y = x + 3.0;

3.0是小數,則會被編譯器作為float型別的常量。當然,字元也有常量,不過和整型常量不同,字元常量必須使用單引號來進行表示。字元常量是使用單引號括起來的一個字元,不能是多個字元。例如,下面都是合法的字元常量:

'a'、'B'、'#'、'8'

需要強調的是隻能是單引號,並且只有一個字元,字元可以是ASCII碼中的任意字元。如果數字被定義成字元常量的話,就不能代表數字字面的量了。如果參與運算,它的值將會是對應的ASCII碼。比如上面的字元常量'8',在ASCII碼對應的值為56。這個時候參與運算,比如加上1,將得到的整數值是57。

2)符號常量

在C語言程式中,還可以使用一個符號常量來代替常量。使用符號常量有兩個好處,一個是如果需要修改常量的話,只要修改定義符號常量的語句就行;另一個好處,使得程式中常量的含義更加清楚。定義符號常量有兩種方法:#define巨集定義和const語句定義。在這裡我就先不展開講了,大家過一眼就好了,後面的教程會詳細的講解巨集定義和const的應用。

4.變數

在程式中,我們會使用到各種變數。當我們建立一個變數時,就會在記憶體中開闢一些空間。一般變數先宣告,然後初始化。

1)宣告變數

C語言中使用宣告語句,來宣告一個變數,指出儲存型別並提供位置標籤。C語言中,變數要求先聲明後定義,這樣做的好處在於:

  • 1.確保後面引用的變數名和宣告的一致,減少了輸入錯誤。如聲明瞭變數teemo,在後面引用時,不小心輸成了timo,編譯器將會報錯,指示timo未宣告。

  • 2.在宣告變數時,會指定變數的型別,當進行運算的時候,編譯器就可以檢查運算是否合法。

  • 3.編譯器根據指定變數的型別分配記憶體。

宣告變數的一般語法格式:

型別 變數名;

其中,型別是資料型別的關鍵字,比如說int表示整數型別、double表示雙精度浮點型別。變數名則需要符合命名規範的識別符號。下面我們將會通過簡單的程式,來介紹如何宣告變數。比如說:我們要宣告一個變量表示提莫的血量。在C語言中,就可以表示:

int teemoHp;
float teemoAttack;

int 是一種資料型別,表示是整數。
teemoHp 是一個識別符號,這裡代表整數型別的血量。
; 表示一個語句結束。

我們從計算機的角度來講,第一條語句指出程式需要一個儲存空間,用這個記憶體來儲存一個整數。那麼在C語言中,寫上這個宣告語句,程式就會將計算機的某一區域記憶體,命名為teemoHp,並在這個記憶體中存放整數型別。teemoHp這個識別符號就是一個變數,它代表teemo的血量。這條語句創造了一個變數teemoHp,我們把這個過程叫做變數宣告。

同類型的變數還可以在一個語句中同時宣告多個變數,各變數之間用逗號分隔開,例如:

int teemoHp, garenHp;

上面語句聲明瞭兩個整數型別的變數,等同於:

int teemoHp;
int garenHp;

2)變數初始化

在對變數宣告時,編譯器會給變數分配記憶體,但分配的這個記憶體並不會被清空。這個就和你刪除電腦中的檔案一樣,雖然你點了刪除這些檔案,但實際上這些檔案還會存在,只是我們看不到了。只有當你再次儲存檔案覆蓋這些檔案時,這些檔案才算是刪除了。這也是一些刪除的檔案,也可以通過某些手段來恢復的重要原因。那麼就可能出現編譯器給我們分配的記憶體,已經有儲存值的情況,而且這個值對我們來說還是不確定的。為了防止程式因為不確定的值而出現不可預料的情況,我們在使用變數的時候就要對其進行賦初值,使得變數的值是確定的,這種方法就是初始化。

下面再來看一個簡單的例項,我們要把提莫的血量作為一個變數,提莫的血量值是586。在C語言中,就可以表示成:

int teemoHp;
teemoHp = 586;

我們先聲明瞭一個變數teemoHp,然後將常量586儲存到變數teemoHp中。第二個語句中,“=”也叫賦值操作符,這個過程叫做賦值。賦值是指資料放到記憶體的過程,我們把這個過程叫做變數的賦值;又因為是第一次賦值,也稱變數的初始化。

在宣告變數的同時可以直接對其進行賦值,上面的兩個語句,又可以直接表示成:

int teemoHp = 586;

如果多個變數具有相同的值,還可以進行連續的賦值。例如:

int teemoHp, garenHp;
teemoHp = garenHp = 586;

但不可以在宣告的時候對其進行連續賦值。像下面語句一樣:

int teemoHp = garenHp = 586;//報錯

這樣寫會導致識別符號garenHp沒有宣告,所以編譯器報錯。

如果要在一個語句中這樣做,我們應該寫成下面語句:

int teemoHp = 586, garenHp = 586;

我們還可以寫成:

int teemoHp, garenHp = 586;
teemoHp = 586;

我們知道,在實際中,提莫通過等級的提升以及出的裝備,血量的值會不斷變化,那我們應該怎麼辦呢?答案是,血量的值是一個變數,我們可以通過再次賦值改變血量的值,例如:

int teemoHp = 586;
teemoHp = 1000;
teemoHp = 5000;

再次的賦值,會把第一次的資料覆蓋掉。也就是說,teemoHp中最後的值是5000(這怕不是一個肉提莫),這也是因為586、1000已經被覆蓋掉了。

5.總結

總結一下,本節內容主要介紹了C語言程式的常量和變數。介紹了常量和變數的概念以及命名規範,然後講解了它們的一些基本使用方法。

6.練習

4-1 對下面進行判斷,哪些是合法識別符號,哪些又不是合法標識?

su8
_total
Class
Student_name
louts_1_2_3
BASIC
M.D.John
\#123
3D45
a>b

4-2 編寫一個程式,對蓋倫的屬性值,找到合適的型別來定義並且為其賦值。
名字:簡稱為G
生命值:455
移動速度:340
攻擊速度:0.625
攻擊範圍:125
生命回覆:8.25
攻擊力:59.5

可以在評論中,寫下你們的練習答案。

之後的文章會給大家帶來更精彩的內容
歡迎關注我的知乎專欄:程式設計師基礎知識
獲取練習答案以及更多實戰專案
歡迎關注我的公眾號:程式設計師基礎知識
交(gao)流(ji)群:493584686