變數
C++ 變數宣告、指派與取值的實作
在 C++ 中,變數 (variable) 是用來儲存資料的命名儲存區。在使用任何變數之前,我們必須先宣告 (declare) 它。本教材將帶你了解 C++ 變數宣告的不同方式、如何為變數指派 (assign) 值,以及如何取值 (access)。
1. 變數的宣告 (Declaration)
宣告變數是告訴編譯器:「我需要一塊記憶體來儲存某種型態的資料,這塊記憶體的名稱叫做...」。
基本宣告
這是最簡單的宣告方式,只宣告變數的型態和名稱。此時環境會依型態的設定,配置一份目前未使用的記憶體,但記憶體中儲存的是一個不確定的垃圾值 (garbage value)。變數就是該記憶體的名稱(代號),接下來設計師可以在該變數的有效區域中,透過變數存取該變數代表的記憶體。
int my_age; // 宣告一個名為 my_age 的整數變數
double salary; // 宣告一個名為 salary 的雙精度浮點數變數
char initial; // 宣告一個名為 initial 的字元變數
宣告並初始化 (Initialization)
宣告並初始化是在宣告變數的同時為它賦予一個初始值。這是一個好習慣,可以避免使用未初始化的變數,從而減少錯誤。
C++ 支援多種初始化方式:
- 複製初始化 (Copy Initialization)
使用等號=來初始化變數。int my_age = 25; double salary = 50000.0; char initial = 'J'; - 直接初始化 (Direct Initialization)
使用小括號()來初始化,類似函式呼叫。int my_age(25); double salary(50000.0); char initial('J'); - 列表初始化 (List Initialization) (推薦)
使用大括號{}來初始化。這是 C++11 引入的,被認為是最安全的初始化方式,因為它可以防止窄化轉換 (narrowing conversion),例如將double賦予int而造成資料遺失。int my_age{25}; double salary{50000.0}; char initial{'J'}; // 錯誤範例:int my_int{3.14}; // 編譯器會報錯
2. 變數的指派 (Assignment)
指派是在變數已經被宣告後,再為它賦予一個新值。
基本指派
使用等號 = 來進行指派。
int my_score;
my_score = 95; // 為 my_score 變數指派值 95
my_score = 100; // 將 my_score 的值更新為 100
鏈結指派 (Chained Assignment)
可以將同一個值指派給多個變數。
int a, b, c;
a = b = c = 10; // 從右到左執行,所有變數最終都為 10
3. 變數的取值與實作 (Accessing Variables)
取值是取得變數所儲存的資料,並在程式中使用它。
基本取值
只要變數名稱不是在 '=' 左側,就是取值。
#include <iostream>
using namespace std;
int main() {
int score = 95;
// 使用 cout 將變數的值輸出到螢幕
cout << score;
// 使用變數進行運算
int bonus = 5;
int total_score = score + bonus;
cout << total_score;
return 0;
}
變數的使用時機
- 表達式 (Expression):在數學運算、邏輯判斷等表達式中使用。
int result = (10 + 20) * 5; if (result > 100) { // ... } - 作為函式參數:將變數的值傳遞給函式。
void print_value(int value) { cout<< value ; } int num = 42; print_value(num);
4. 實作範例:一個完整的程式
這個範例程式展示了變數的宣告、初始化、指派與取值的完整流程。
#include <iostream>
using namespace std;
int main() {
// 變數命名示範:使用蛇形命名法
int rectangle_length{10}; // 列表初始化
int rectangle_width = 5; // 複製初始化
// 進行運算並指派給新變數
int rectangle_area = rectangle_length * rectangle_width;
// 輸出結果
cout << rectangle_length << endl;
cout << rectangle_width << endl;
cout << rectangle_area << endl;
// 變數的重新指派
rectangle_length = 15;
rectangle_area = rectangle_length * rectangle_width; // 重新計算面積
// 輸出更新後的結果
cout << rectangle_length << endl;
cout << rectangle_area << endl;
return 0;
}
5. 變數命名的規則與原則
良好的變數命名可以讓程式碼更容易閱讀和理解。請遵循以下規則和建議:
命名規則 (Grammar Rules)
這是編譯器強制執行的規則,如果違反,程式會編譯失敗。
- 大小寫字母、數字與底線:變數名稱可以包含大寫字母 (
A-Z)、小寫字母 (a-z)、數字 (0-9) 和底線 (_)。 - 不可用數字開頭:變數名稱不能以數字開頭。例如,
1_name是不合法的。 - 區分大小寫:C++ 區分大小寫。
myVar和myvar是兩個不同的變數。 - 不可使用關鍵字:不能使用 C++ 的保留關鍵字作為變數名稱,例如
int、class、return等。
命名原則 (Style Guidelines)
這些是程式設計師社群普遍認同的建議,遵循這些原則可以讓你的程式碼更具可讀性。
- 語意清晰:變數名稱應該清晰地表達它的用途。例如,用
student_age比用sa更好。 - 使用慣例:選擇一種命名慣例並貫徹使用。
- 蛇形命名法 (snake_case):所有字母都是小寫,單字之間用底線分隔。
範例:user_name,total_count - 駝峰式命名法 (camelCase):第一個單字小寫,後續每個單字的第一個字母大寫。
範例:userName,totalCount - 匈牙利命名法 (Hungarian notation):在變數名稱前加上縮寫來表示資料型別。
範例:iCount(整數),strName(字串)
注意: 現代 C++ 程式碼中,由於auto和強型別的盛行,這種命名法已較少使用。
- 蛇形命名法 (snake_case):所有字母都是小寫,單字之間用底線分隔。
返回課程目錄
許老師APCS線上家教


留言
張貼留言