指針的指針是多個間接或指針鏈的一種形式。正常情況下,指針包含一個變量的地址。當我們定義了一個指向指針的指針,第一個指針包含的地址的第二指針,它指向包含實際的值的位置,如下圖所示。
這是一個指向指針的指針的變量必須在聲明等。這是通過在它的名字前面放置一個附加的星號。例如,以下是聲明一個指向int類型的指針的聲明:
int **var;
當一個目標值間接指向由一個指向指針的指針,訪問該數值,需要星號運算符被應用兩次,如下面的例子中所示:
#import <Foundation/Foundation.h> int main () { int var; int *ptr; int **pptr; var = 3000; /* take the address of var */ ptr = &var; /* take the address of ptr using address of operator & */ pptr = &ptr; /* take the value using pptr */ NSLog(@"Value of var = %d ", var ); NSLog(@"Value available at *ptr = %d ", *ptr ); NSLog(@"Value available at **pptr = %d ", **pptr); return 0; }
上面的代碼編譯和執(zhí)行時,它會產生以下結果:
2013-09-14 00:41:45.687 demo[22087] Value of var = 3000 2013-09-14 00:41:45.687 demo[22087] Value available at *ptr = 3000 2013-09-14 00:41:45.687 demo[22087] Value available at **pptr = 3000