指針的指針是多個(gè)間接或指針鏈的一種形式。正常情況下,指針包含一個(gè)變量的地址。當(dāng)我們定義了一個(gè)指向指針的指針,第一個(gè)指針包含的地址的第二指針,它指向包含實(shí)際的值的位置,如下圖所示。
這是一個(gè)指向指針的指針的變量必須在聲明等。這是通過(guò)在它的名字前面放置一個(gè)附加的星號(hào)。例如,以下是聲明一個(gè)指向int類(lèi)型的指針的聲明:
int **var;
當(dāng)一個(gè)目標(biāo)值間接指向由一個(gè)指向指針的指針,訪問(wèn)該數(shù)值,需要星號(hào)運(yùn)算符被應(yīng)用兩次,如下面的例子中所示:
#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í)行時(shí),它會(huì)產(chǎn)生以下結(jié)果:
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