指標變數必須被賦予記憶體位址,否則編譯器報錯。使用 & 運算子獲取位址:
int x;
int* px = &x; // px 儲存 x 的位址,稱 "px 指向 x"
宣告指標時,型別必須與目標變數一致。
這是指標與參考的關鍵差異。參考宣告時直接綁定目標變數,不使用 & 運算子 (此處 & 為型別修飾符):
int x;
int& rx = x; // rx 成為 x 的別名,"參考 x"
參考底層同樣儲存位址,但語法層面隱藏了位址操作,使用更直觀安全。
#include <iostream>
int main() {
int someNumber = 12345;
int* ptrSomeNumber = &someNumber;
std::cout << "someNumber = " << someNumber << std::endl;
std::cout << "ptrSomeNumber (位址) = " << ptrSomeNumber << std::endl; // 十六進位位址
// 解參考 * 運算子:存取指標指向的值
std::cout << "ptrSomeNumber 指向的值 = " << *ptrSomeNumber << std::endl; // 12345
// 透過指標修改值
*ptrSomeNumber = 999;
std::cout << "修改後 someNumber = " << someNumber << std::endl; // 999
return 0;
}
| 操作 | 指標 | 參考 |
|---|---|---|
| 指向/綁定記憶體位址 | ptr = &var; | ref = var; (宣告時綁定) |
| 複製給同類型變數 | ✅ ptr2 = ptr1; | ❌ 參考不可重綁定 |
| 修改目標值 | *ptr = val; | ref = val; |
| 指標算術 (遞增/遞減位址) | ✅ ptr++; | ❌ 不支援 |
| 傳遞給函數 | ✅ 指標傳遞 | ✅ 參考傳遞 (避免拷貝) |
| 可為空/無效狀態 | ✅ nullptr | ❌ 必須綁定有效物件 |
下一篇將深入探討空指標判斷、動態記憶體配置 (new/delete) 及記憶體管理最佳實踐。