首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++探索之旅(一·十二):指針核心機制——內存地址、動態分配、多場景應用全圖解

     編輯:關於C++

內存地址與取址符

每個變量佔用唯一內存地址。&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,否則內存洩漏。

三大使用場景

  1. 手動控制內存:大對象、不確定生命周期、數組大小運行時決定
  2. 多代碼塊共享數據:如遊戲實體指向同一目標,GUI 控件共享模型
  3. 運行時多態選擇:基類指針指向派生對象,虛函數動態分發

經典例子:遊戲攻擊目標

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,刪除後置空
  • 場景:手動內存、共享數據、多態選擇
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved