前言:
先要理解位址和資料,你可以想象有很多盒子,每個盒子有對應的號碼,那個號碼叫做「位址」,而盒子裡放的東西叫做「資料」。
上面就段理解了,*p和p的區別就不難解釋了。
p是指標變數,用來存放位址,你可以認為是上面所說的盒子的號碼,「*」是解引用操作符,你可以把它理解成開啟盒子,*p就是開啟p號盒子,取出裡面的資料。
簡單來說,你記住,p存放的是位址,而*p是讓程式去那個位址取出資料。
總結:
假設我們定義乙個指標p。
那麼會經常使用到三個符號:
1,p;
2,*p;
3,&p;
初學者經常會感到很迷茫,到底這三個符號表示什麼?
我們知道,p是乙個指標變數的名字,表示此指標變數指向的記憶體位址,如果使用%p來輸出的話,它將是乙個16進製制數。而*p表示此指標指向的記憶體位址中存放的內容,一般是乙個和指標型別一致的變數或者常量。
而我們知道,&是取位址運算子,&p就是取指標p的位址。等會,怎麼又來了個位址,它到底和p有什麼區別?
區別在於,指標p同時也是個變數,既然是變數,編譯器肯定要為其分配記憶體位址,就像程式中定義了乙個int型的變數i,編譯器要為其分配一塊記憶體空間一 樣。而&p就表示編譯器為變數p分配的記憶體位址,而因為p是乙個指標變數,這種特殊的身份注定了它要指向另外乙個記憶體位址,程式設計師按照程式的需要 讓它指向乙個記憶體位址,這個它指向的記憶體位址就用p表示。而且,p指向的位址中的內容就用*p表示。
有著夢想,但改變不了世界, 只有堅持,讓生活不再單調, 我不是我, 我還是我。
P P和 P的區別
p p和 p三者的區別 假設我們定義乙個指標p。那麼會經常使用到三個符號 1,p 2,p 3,p 初學者經常會感到很迷茫,到底這三個符號表示什麼?我們知道,p是乙個指標變數的名字,表示此指標變數指向的記憶體位址,如果使用 p來輸出的話,它將是乙個16進製制數。而p表示此指標指向的記憶體位址中存放的內...
如何區別 p , p 和 p
在這裡先提出問題 1.如何區別 p p 和 p 2.的運算優先順序比 高,那為什麼在執行 c i 語句時,直觀感覺是先賦值,再加一呢?事實上,1 所有的單目 一元 運算子具有相同的優先順序,而且是從右到左運算的,所以 p 和 p 是一樣的。2 執行語句i 0 c i 我們知道,執行結果是c 0,i ...
C語言指標 p 和 p及 p的區別
今天覆習了一下c語言的指標題目,發現在很多 結果題目中都出現了表示式 p p和 p,而這幾個表示式特別容易混淆。那麼通過什麼方式區分他們呢,答案就是運算子優先順序。和 指標訪問運算子 優先順序相同,根據從右往左的結合性,因此等價於 p 又因為後置 是先使用再自加,所以先取值 p,然後再讓p加1.p ...