2.5 變數
¶什麼是變數?
變數是一個具名的記憶體空間,用來儲存資料。當你宣告變數時,編譯器會:
- 根據型態分配適當大小的記憶體
- 給該記憶體空間一個名字
- 追蹤這個變數的型態
¶變數的宣告與初始化
先講三個會一直用到的詞:
- 宣告:告訴電腦「我要一個某型態、某名字的變數」,例如
int age;——電腦這時就會替age準備好空間。 - 初始化:在宣告的同時就先給它一個起始值,例如
int height = 180;。這個「一宣告就順手給定值」的動作就叫初始化。 - 指派:變數宣告之後再把值放進去(或改成別的值),例如後面那行
age = 18;。
#include <iostream>
using namespace std;
int main() {
int age; // 宣告(未初始化)
int height = 180; // 宣告同時初始化
int score = 95, level = 5; // 多個變數同時宣告
age = 18; // 之後指派值
cout << "age: " << age << endl;
cout << "height: " << height << endl;
cout << "score: " << score << endl;
return 0;
}
執行結果:
age: 18
height: 180
score: 95
¶變數的命名規則
C++ 對變數名有以下要求:
- 開頭必須是字母或底線
_,不能是數字 - 後續可以是字母、數字、底線
- 大小寫敏感(
age和Age是不同變數) - 關鍵字不能當變數名(
int、if、for等)
✓ 合法的名稱(這些都可以):
int age;
int age123;
int _private;
int currentScore;
int current_score;
✗ 不合法的名稱(這些會編譯失敗):
int 123age; // 開頭是數字
int my-age; // 含有減號(- 是運算子)
int current score; // 中間有空格
int if; // if 是關鍵字
¶全域變數 vs. 局部變數
變數宣告的位置,會決定它叫「全域」還是「局部」:
- 全域變數:宣告在所有函式外面(包括
main()外面)。整個程式從它宣告之後都看得到、用得到。 - 局部變數:宣告在某個函式或
{ }區塊裡面(例如寫在main()裡)。只在它所屬的那個範圍內有效。
#include <iostream>
using namespace std;
int globalVar = 100; // 全域變數:宣告在 main() 外面
int main() {
int localVar = 50; // 局部變數:宣告在 main() 裡面
cout << globalVar << " " << localVar << endl; // 兩個在這裡都看得到
return 0;
}
¶變數的初始化
¶動手試試看
試著在程式中宣告幾個變數,使用 cin 讀入值,再用 cout 輸出:
#include <iostream>
using namespace std;
int main() {
int age;
int height; // 身高(公分,用整數)
cout << "Enter your age: ";
cin >> age;
cout << "Enter your height (cm): ";
cin >> height;
cout << "Your age: " << age << ", height: " << height << " cm" << endl;
return 0;
}