2009年1月22日 星期四

C/C++ 雙重指標(指向指標的指標變數)

雙重指標的意思就這個雙重指標變數指向的是指標的位址,而不是指向一般變數的指標位置,也就是『指向指標的指標變數』。
宣告一個雙重指標變數:

int **prt;
char **prt;
double **ptr;

指向一個指標變數:
int **doublePtr;
int *ptr;
int b = 10;

ptr =&b;
doubluePtr = &ptr;

上述doublePtr指標變數的內容存放ptr的位址,而prt指標變數內容則存放變數b的記憶體位址如下說明:

dobulePtr --> 變數內容存放ptr記憶體位址
*dobulePtr--> ptr --> 取出ptr所指向變數b記憶體位址
**dobulePtr --> *ptr --> 取出所指向變數b之變數值
&dobulePtr--> 取出doublePtr本身的記憶體位址

宣告三重指標,指向雙重指標變數的位址:

int ***wwwPtr;
wwwPtr = &doublePtr;

操作方式如下:

wwwPtr --> 變數內容存放doublePtr變數記憶體位址
*wwwPtr --> dobulePtr --> 取出doublePtr所指向ptr變數記憶體位址
**wwwPtr --> *doublePtr --> ptr --> 取出ptr所指向變數b記憶體位址
***wwwPtr --> **doublePtr --> *ptr --> 取出ptr所指向變數b之變數值
&wwwPtr --> 取出wwwPtr本身變數之記憶體位址