指標問題的一點體會(區別 [指向指標的指標] 與 [指標的指標] .) (轉)
"指向指標的指標"與"指標的指標"好象是一個意思,我想就此說明一點休會。
int a=3;
int *p=&a;
int *pp=&p;
其實最後一句的int *pp=&p也是給一個指標賦初值,不過這個初值是一個"指標的地址”,而不是通常的“變數地址”(所以此時會有警告!),但是還是可以透過的。
可是,從使用的觀點來看的話,就知道這個pp指標沒有任何用處,因為pp指是指標p的地址,也就是&p(即pp=&p);那麼*pp=&a,即*pp表示變數a的地址(不能說pp指向變數a)。
如此看來,要操作變數a的話,可以使用*p來操作(如*p=8),但是透過pp則不行,因為*pp只是表示變數a的地址,並不能操作該地址中的內容,要在地址前加*來表示操作地址內的內容,但這是是編譯器不充許的,因為你定義的時候,pp只是個指標,它只能運用一次*運算子。
這種情況看上去就象是,看得到,卻摸不到(不能操作變數).
所以如上定義一個指標來指向一個指標,是沒有多大的用處的,他唯一可以改變的就是指標pp的指向了(如*pp1=1000,則指標pp指向的地址變為1000),但這種改變是危險的和致命的,也是沒有什麼實際用處的,因為pp指向的改變是很容易的(根本沒有必要透過定義一個指向自己的指標來改).
如下:
int a=3,b;
int *p=&a;
int *p1=&b;
p=p1;
所以,如開頭定義一個指標來指向指標的正確方法應該如下:
int a=3;
int *p=&a;
int **pp=&p;
如上,pp是個指標的指標.他才是可以在中起到作用,例如**pp=8,則a=8;等同於*p=8;
歡迎大家指標說法錯誤之處,以加強更深一層的認識!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-959246/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 指向指標的指標指標
- 如何理解指向指標的指標?指標
- C/C++指向指標的指標C++指標
- 指標常量和常量指標的區別指標
- 關於指標傳遞和指標的指標指標
- 詳解c++指標的指標和指標的引用C++指標
- C++ 指標陣列與陣列指標的區別C++指標陣列
- 【C++系列】指標物件和物件指標的區別C++指標物件
- C/C++——指向函式的指標和指向函式的指標的陣列C++函式指標陣列
- 引用與指標的區別指標
- Go 陣列指標(指向陣列的指標)Go陣列指標
- 指向常量資料的指標和常量指標指標
- 有關this指標指向問題指標
- NULL 指標、零指標、野指標Null指標
- 徹底搞清C/C++中一維陣列,二維陣列,指標,陣列指標和指標陣列以及指向指標的指標,行地址和列地址之間的關係C++陣列指標
- JavaScript 獲取滑鼠指標的座標JavaScript指標
- 指向const物件的指標 和 const指標物件指標
- 使用指標接收器時,值物件自動取指標的奇怪問題指標物件
- ARC中強指標與弱指標指標
- 控制指標與統計指標指標
- CUJ:標準庫:容納指標的容器 (轉)指標
- 野指標 空指標指標
- 【原創】淺談指標(十三)指向陣列的指標指標陣列
- 陣列指標:a pointer to an array,即指向陣列的指標陣列指標
- 第 10 節:複合型別-5. 指標 -- 指標與指標變數 -8. 多級指標型別指標變數
- 指標陣列與陣列指標指標陣列
- C語言重點——指標篇(一文讓你完全搞懂指標)| 從記憶體理解指標 | 指標完全解析C語言指標記憶體
- 指向函式的指標函式指標
- 指向陣列的指標陣列指標
- 指標常量和常量指標指標
- C語言指標安全及指標使用問題C語言指標
- 指標 (轉)指標
- 指向指標的常量引用瞭解指標
- C語言指標(三):陣列指標和字串指標C語言指標陣列字串
- All I know about A/B Test (1) : 均值型指標與比值(率)型指標的計算區別指標
- 指標的理解指標
- 指標的用法指標
- 陣列指標,指標陣列陣列指標