http://www.codeproject.com/cpp/PtrToPtr.asp
除此之外也可以看看這篇:
http://www.eskimo.com/~scs/cclass/int/sx8.html
其實看第一篇就可以知道為什麼了,除了用來指向二維陣列之外,函式的參數傳遞才是重點,重點整理如下:
- ptr-to-ptr 或 ref-to-ptr 是用來解決指標參數傳遞給函式時,指標本身是 pass by value 的問題,簡單的說,就是在函式中改變指標數值,返回時會不見,因為在函式中的指標是一個複製的區域變數 (local variable)。
- ref-to-ptr 只有 C++ 能用,因為 reference 是 C++ 才有的。
- ** 不一定都是代表 ptr-to-ptr,如 main (int argc, char** argv) 實際上是 main (int argc, char* argv[]),也就是指標陣列 (array of pointers)的另一種表現方式。
- ptr-to-ptr 中,** 用法與 * 同,只是在原本的用法上多加一個 *,而不加 * 的那一個變數是不能修改的,否則會遺失這個變數的繫結,也沒意義。(**var = val, *var = address, var = DON'T CHANGE IT!)
- ref-to-ptr 中,在函式中使用指標與一般的指標用法相同,差異只是在函式的宣告中多一個 & 表示傳遞這個指標變數時以參考值傳遞如: void func(int*& rpInt)
沒有留言:
張貼留言