C/C++指向指標的指標
我在一篇教程中看到下面這段,它描述指向指標的指標是如何運作的。
引用文章相關段落如下:
int i = 5, j = 6, k = 7;
int *ip1 = &i, *ip2 = &j;
現在我們可以這麼寫:
int **ipp = &ip1;
那麼現在指標 ipp 指向了 ip1,ip1 指向了 i。*ipp 就是 ip1,**ipp 就是 i,或者說是 5。我們可以用我們熟悉的盒子箭頭圖來描述,像這樣:
如果我們接著這麼寫:
*ipp = ip2;
我們就改變了 ipp 指向的那個指標(也就是 ip1),現在它指向 ip2 所指的地方。也就是說(ip1)現在它指向了 j:
我的疑問是:為什麼在第二幅圖裡,ipp 還是指向 ip1 而不是 ip2?
最佳答案:
讓我們暫時忘掉那些關於指標的各種類比。指標實際上存放的是記憶體的地址。
& 符號的意思是取地址,也就是返回一個物件在記憶體中的地址。
* 符號的意思是取得一個指標所指向的物件。 也就是如果一個指標儲存著一個記憶體地址,那麼它就返回在那個地址的物件。
所以當你這麼寫時 *ipp = ip2,實際上是把 ipp 存的地址所對應的物件,也就是 ip1 取到,然後把 ip2 存的值賦值給 ip1,也就是 j 的地址。
簡單點就是:
&:取址。
* :取值。
相關文章
- 指向指標的指標指標
- C/C++——指向函式的指標和指向函式的指標的陣列C++函式指標陣列
- 如何理解指向指標的指標?指標
- 詳解c++指標的指標和指標的引用C++指標
- 指標問題的一點體會(區別 [指向指標的指標] 與 [指標的指標] .) (轉)指標
- 【C++系列】指標物件和物件指標的區別C++指標物件
- C++ 指標陣列與陣列指標的區別C++指標陣列
- 徹底搞清C/C++中一維陣列,二維陣列,指標,陣列指標和指標陣列以及指向指標的指標,行地址和列地址之間的關係C++陣列指標
- C++ this 指標C++指標
- C++ 指標C++指標
- 指向指標的常量引用瞭解指標
- C++ 中 this 指標的用法詳解C++指標
- C++引用比指標的好處C++指標
- C++引用與指標的比較C++指標
- 關於指標傳遞和指標的指標指標
- C++指標理解C++指標
- 【c++】智慧指標C++指標
- C++智慧指標C++指標
- C/C++中函式指標的含義C++函式指標
- C++ 返回函式指標的函式C++函式指標
- C++中智慧指標的簡單使用C++指標
- 【C++】智慧指標的正確使用方式C++指標
- C++父類指標指向子類物件的實現原理C++指標物件
- 再學C/C++ 之 指標常量 和 常量指標C++指標
- 深入探索 C/C++ 陣列與指標的奧祕之一:陣列與指標概念剖析C++陣列指標
- C/C++指標總結C++指標
- C/C++—— 寫一個函式,它的引數為指向函式的指標,返回型別也為指向函式的指標C++函式指標型別
- Go 陣列指標(指向陣列的指標)Go陣列指標
- 指向常量資料的指標和常量指標指標
- C++中的this指標C++指標
- c++ 函式指標C++函式指標
- C++引用和指標C++指標
- C++指標轉換C++指標
- C++指標問題C++指標
- 「C++」理解智慧指標C++指標
- c++指標小計C++指標
- C++(函式指標)C++函式指標
- 指標常量和常量指標的區別指標