如何理解指向指標的指標?

2021-07-28 01:18:29 字數 751 閱讀 7330

原文: 

我在一篇教程中看到下面這段,它描述指向指標的指標是如何運作的。

引用文章相關段落如下:

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 的位址。

簡單點就是:

&:取址。

* :取值。

如何理解指向指標的指標?

我在一篇教程中看到下面這段,它描述指向指標的指標是如何運作的。引用文章相關段落如下 int i 5,j 6,k 7 int ip1 i,ip2 j 現在我們可以這麼寫 int ipp ip1 那麼現在指標 ipp 指向了 ip1,ip1 指向了 i。ipp 就是 ip1,ipp 就是 i,或者說是 ...

從指標到指向指標的指標 個人理解!

c c 是工科學生必不可少的課程。本人是電子通訊行業的,客觀上說沒有計算機 軟工專業的學生更加專業!但是我們也得會程式設計,不然的話畢業以後沒有飯碗啊!下面寫一下個人對指標的理解。首先,我們要知道定義乙個變數就會在記憶體中開闢乙個空間,這個空間就是儲存這個數的。例如 int value 2131 計...

指向指標的指標

理解二級指標,關鍵是理解指標的儲存方式和意義。這裡以指向int型指標的指標為例,梳理一下二級指標在記憶體分配中 的奧妙.include using namespace std int main int p a int point p cout a a endl p p endl p p endl p...