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

C++ 指標入門完全指南

     編輯:VC 教學

指標是 C/C++ 核心概念,許多演算法(如鏈結串列)皆圍繞指標設計。本文從零開始,帶你掌握指標宣告、初始化、解參考、常見陷阱與動態記憶體管理。

什麼是指標?

一般變數儲存實際資料;指標儲存資料所在的記憶體位址。指標告訴程式:「去這個位址找資料」。

宣告與初始化

int *pNumberOne;      // 宣告指向 int 的指標
int *pNumberTwo;
int some_number = 10;
int some_other_number = 20;

pNumberOne = &some_number;       // & 取址運算子
pNumberTwo = &some_other_number;

習慣在指標變數前加 p 前綴(如 pNumber)提升可讀性。

透過指標存取/修改資料

#include <iostream>
using namespace std;

int main() {
    int nNumber = 15;
    int *pPointer = &nNumber;

    cout << "nNumber = " << nNumber << endl; // 15

    *pPointer = 25;   // 解參考:修改指標指向的記憶體內容

    cout << "nNumber = " << nNumber << endl; // 25,原變數被修改
    return 0;
}

*pPointer 稱為解參考,相當於直接操作 nNumber。

經典陷阱:回傳區域變數位址


int *pPointer;

void SomeFunction() {
    int nNumber = 25;
    pPointer = &nNumber; // 指向區域變數
} // 函數結束,nNumber 被銷毀,記憶體釋放

int main() {
    SomeFunction();
    cout << *pPointer; // 未定義行為!存取已釋放記憶體
}

錯誤原因:區域變數生命週期隨函數結束而終止。指標指向的記憶體已無效,後續存取導致未定義行為(可能輸出垃圾值、崩潰、或看似正常但極不穩定)。

解決方案:動態記憶體配置

使用 new/delete(C++)或 malloc/free(C)在堆疊配置記憶體,生命週期由程式設計師手動控制。


void SomeFunction() {
    pPointer = new int;   // 堆疊配置
    *pPointer = 25;
}

int main() {
    SomeFunction();
    cout << *pPointer; // 正確輸出 25
    delete pPointer;   // 記得釋放!
}

動態配置記憶體直到呼叫 delete 才會釋放,解決生命週期不匹配問題。

進階主題預告

  • 指標運算(p+1 移動至下一個元素)
  • 指標陣列 vs 陣列指標
  • 函式指標與回呼
  • 智慧指標(unique_ptr, shared_ptr)自動管理生命週期

掌握指標是精通 C/C++ 的關鍵門檻,建議多動手實驗、畫記憶體圖解析行為。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved