原文:
我在一篇教程中看到下面這段,它描述指向指標的指標是如何運作的。
引用文章相關段落如下:
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...