C++ 指向指針的指針(多級(jí)間接尋址)

C++ 指針 C++ 指針

指向指針的指針是一種多級(jí)間接尋址的形式,或者說(shuō)是一個(gè)指針鏈。通常,一個(gè)指針包含一個(gè)變量的地址。當(dāng)我們定義一個(gè)指向指針的指針時(shí),第一個(gè)指針包含了第二個(gè)指針的地址,第二個(gè)指針指向包含實(shí)際值的位置。

C++ 指向指針的指針

一個(gè)指向指針的指針變量必須如下聲明,即在變量名前放置兩個(gè)星號(hào)。例如,下面聲明了一個(gè)指向 int 類型指針的指針:

int **var;

當(dāng)一個(gè)目標(biāo)值被一個(gè)指針間接指向到另一個(gè)指針時(shí),訪問(wèn)這個(gè)值需要使用兩個(gè)星號(hào)運(yùn)算符,如下面實(shí)例所示:

#include <iostream>
 
using namespace std;
 
int main ()
{
   int  var;
   int  *ptr;
   int  **pptr;

   var = 3000;

   // 獲取 var 的地址
   ptr = &var;

   // 使用運(yùn)算符 & 獲取 ptr 的地址
   pptr = &ptr;

   // 使用 pptr 獲取值
   cout << "Value of var :" << var << endl;
   cout << "Value available at *ptr :" << *ptr << endl;
   cout << "Value available at **pptr :" << **pptr << endl;

   return 0;
}

當(dāng)上面的代碼被編譯和執(zhí)行時(shí),它會(huì)產(chǎn)生下列結(jié)果:

Value of var = 3000
Value available at *ptr = 3000
Value available at **pptr = 3000

C++ 指針 C++ 指針