每個變量佔用唯一內存地址。&var 獲取地址(十六進制顯示,如 0x22ff0c)。
int *ptr = nullptr; // 推薦風格:* 靠近類型 int *p1, *p2, *p3; // 避免 int* p1,p2 只有 p1 是指針
指針大小固定(32位系統 4 字節,64位 8 字節),與指向類型無關。
| 操作 | 語法 | 含義 |
|---|---|---|
| 存地址 | ptr = &var; | ptr 指向 var |
| 取值 | *ptr | 解引用,訪問指向內容 |
| 打印指針 | cout << ptr | 顯示地址值 |
| 打印指向值 | cout << *ptr | 顯示變量值 |
int *p = new int; // 分配 *p = 42; // 使用 delete p; // 釋放指向內存 p = nullptr; // 防野指針
必須配對:每個 new 對應一個 delete,否則內存洩漏。
Entity *target = nullptr; // 無目標 // 戰鬥中 target = &enemy1; // 指向敵人1 target->takeDamage(10); // 目標切換 target = &enemy2; // 只需改指針
string *ans = nullptr;
switch(choice) {
case 'A': ans = &optA; break;
case 'B': ans = &optB; break;
}
cout << *ans; // 輸出用戶選擇的答案
& 取址,* 解引用/聲明new/delete 手動內存管理nullptr,刪除後置空