C 指向指針的指針

C 指針 C 指針

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


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

int **var;

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

#include <stdio.h>
 
int main ()
{
   int  var;
   int  *ptr;
   int  **pptr;

   var = 3000;

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

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

   /* 使用 pptr 獲取值 */
   printf("Value of var = %d\n", var );
   printf("Value available at *ptr = %d\n", *ptr );
   printf("Value available at **pptr = %d\n", **pptr);

   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 指針