close
資料是儲存在記憶體中的一塊空間中,為了取得資料,我們必須知道這塊記憶體空間的位置,然而若使用記憶體位址編號的話相當的不方便,我們使用一個明確的名 稱來作參考,變數是一個指向資料儲存空間的參考,我們將資料指定給變數,變數就會將資料儲存至對應的記憶體空間,我們呼叫變數,變數就會將對應的記憶體空 間的資料取出供我們使用。

在C++中要使用變數,必須先宣告變數名稱與資料型態,例如:
代碼:
int intNum; // 宣告一個整數變數
double dblNum; // 宣告一個倍精度浮點數變數


就 如上面所舉的例子,我們使用int、float、double、char等關鍵字(keyword)來宣告變數名稱並指定其資料型態,變數在命名時有一些 規則,它不可以使用數字作為開頭,也不可以使用一些特殊字元,像是*&^%之類的字元,而變數名稱不可以與C++內定的關鍵字同名,例如int、 float、class等等。

變數的命名有幾個風格,主要以清楚易懂為主,初學者為了方便,當使用一些簡單的字母來作為變數名稱,這會造成日後程式維護的困難,命名變數時發生同名的情況也會增加。

在過去曾流行過匈牙利命名法,也就是在變數名稱前加上變數的資料型態名稱縮寫,例如intNum用來表示這個變數是int整數資料型態,fltNum表示一個float資料型態,然而隨著現在程式的發展規模越來越來,這種命名方式已經不被鼓勵。

過去的程式在撰寫時,變數名稱的長度會有所限制,但現在已無這種困擾,因而現在比較鼓勵用清楚的名稱來表明變數作用,通常我們會以小寫字母作為開始,並在每個單字開始時第一個字母使用大寫,例如:
代碼:
int ageForStudent;
int ageForTeacher;


像這樣的名稱可以讓人一眼就看出這個變數的作用,如果程式的規模較大,我們還可以考慮用底線來為變數作階層管理,例如:
代碼:
int program_component_version;
int program_component_update;


變 數名稱可以使用底線作為開始,通常使用底線作為開始的變數名稱,表示它是私用的(private),只在程式的某個範圍使用,外界並不需要知道有這個變數 的存在,通常這樣的變數名稱常用於物件導向中,類別的私有成員(private member),C++支援物件導向,這之後才會學到,一個宣告的例子如下::
代碼:
double _window_center_x;
double _window_center_y;


在C++中宣告一個變數,就會配置一塊記憶體空間給它,這塊空間中原先可能就有資料,也因此變數在宣告後的值是不可預期的,可以的話,儘量在變數宣告後初始其值,我們使用「指定運算子」(assignment operator)=來指定變數的值,例如:
代碼:
int ageForStudent = 0;
double scoreForStudent = 0.0;
char levelForStudent = A;


上面這段程式在宣告變數的時候,同時指定變數的儲存值,而您也看到我們如何指定字元給字元變數,字元在指定時需使用引數 來包括;在指定浮點數時,我們會習慣使用小數的方式來指定,如0.0,在C++中寫下0.0這麼一個常數的話,其預設為double資料型態。

在宣告變數之後,我們可以直接呼叫變數名稱來取得其所儲存的值,下面這個程式是個簡單的示範:
代碼:
#include iostream
using namespace std;

int main() {
int ageForStudent;
double scoreForStudent;
char levelForStudent;

cout
年級 得分 等級;
cout
ageForStudent
scoreForStudent
levelForStudent

;

ageForStudent = 5;
scoreForStudent = 80.0;
levelForStudent = B;

cout
年級 得分 等級;
cout
ageForStudent
scoreForStudent
levelForStudent

;

return 0;
}


在這個程式中,我們首先宣告變數,但並沒有初始其值,所以第一次顯示時會出現不可預期的資料,而在指定變數的值之後,有顯示變數值時就會出現指定的資料了,如下所示:
代碼:
年級 得分 等級
10738301764.8579e-270@

年級 得分 等級
5 80B


在 C++中寫下一個數值,我們稱之為常數,它會存在記憶體的某個位置,我們無法改變它的值;而在使用變數的時候,我們也會使用一種叫「常數」的變數,嚴格來 說它並不是常數,只不過我們指定數值給這個變數之後,就不可再改變其值,有人為了區分其與常數的差別,還給了它一個奇怪的名稱:「常數變數」。

先不要管「常數變數」這個怪怪的名稱,其實它終究是個變數而已,我們在宣告變數名稱的同時,加上const來限定,只不過這個變數一但指定了值,就不可以再改變它的值,如果程式中有其它程式碼試圖改變這個變數,編譯器會先檢查出這個錯誤,例如:
代碼:
const int maxNum = 10;
maxNum = 20;


這一段程式碼中的maxNum變數我們使用const來限定,所以它在指定為10之後,就不可以再指定值給它,所以第二次指定會被編譯器指出錯誤,在Linux的g++編譯器下,會出現這樣的錯誤訊息:
代碼:
assignment of read-only variable `maxNum


使用const來限定的變數,目的通常就是不希望其它的程式碼來變動它的值,例如用於迴圈計數次數的指定(迴圈之後就會學到),或是像圓周率PI的指定。
arrow
arrow
    全站熱搜

    天才R 發表在 痞客邦 留言(0) 人氣()