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

C 語言指標進階(一):指向指標的指標(二級指標)詳解

     編輯:關於C語言

什麼是二級指標?

指標儲存記憶體位址。指標變數本身佔用記憶體,因此也有自己的位址。若有一個指標變數儲存另一個指標變數的位址,它就是「指向指標的指標」,即二級指標(**)。

直接引用 vs 間接引用

  • 直接引用:透過變數名稱存取值(a)。
  • 間接引用:透過指標存取值(*p)。

兩層間接引用

  1. 一級位址:指標指向目標變數(int *p = &a)。
  2. 二級位址:指標指向「指向目標變數的指標」(int **pp = &p)。

生活化比喻

  • 一級:你有對方電話(指標),直接撥打聯繫。
  • 二級:你沒有對方電話,但有他妹妹電話(一級指標),透過妹妹查到對方電話(二級指標 → 一級指標 → 目標)。

超過兩層指標通常暗示設計過度複雜,應重新審視。

正確宣告與常見錯誤

int a = 99;
int *pa = &a;        // 正確
int **ppa = &a;      // 錯誤:型別不符(&a 是 int*,非 int**)
int **ppa = &&a;     // 錯誤:&a 是位址常數,不能取址
int **ppa = &pa;     // 正確:ppa 指向 pa

記憶體佈局圖解

記憶體佈局示意圖

假設 a 位於 0x0012FF44,值為 0x63(99):

運算式值說明
a63目標值
pa0012FF44一級指標值(a 位址)
*pa63解參考取值
ppa0012FF40二級指標值(pa 位址)
*ppa0012FF44解參考得 pa 值
**ppa63雙重解參考得 a 值

結語

掌握多層指標關鍵在於「記憶體位址鏈」的心智模型。下一篇將探討二級指標的實際應用場景(如函式修改指標參數、動態二維陣列等)。

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