C語言的指針圖示

所謂指針定義,可以認爲一個指針位置有2個結構,第一個結構就是指針所指向的地址,第二個結構就是地址裏的數據。
對賦值操作來說,指針變量在左邊和右邊不一樣,在左邊是取地址(也可以理解爲容器),在右邊的是取地址處的值(也就是容器裏的東西)。

// 結合圖示,這裏的*ppp你覺得是修改哪個變量的值呢?
// 答案:修改的是pp地址處的值,也就是說 *pp 和 &p 要更改的地址是同一處(地址關係:*pp === &p === 0x02),也就是修改 0x02 地址處的值。
*pp = 54321;

// 結合圖示,如果我們要取**pp的值。
// 這裏實際就是把&p地址處的值給取出來了,因爲他在右邊的位置上。
int cpVal = **pp


// 口訣就是左值是取地址(容器),右值是取地址處的值。
// 其他的*p也就好理解了,這裏就不解釋了

下圖是個人理解的將指針所指向的值賦值給一個新變量的流程,僅供參考:


有問題留言溝通

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章