看板 C_and_CPP 關於我們 聯絡資訊
最近剛踏入C++的懷抱? 前面概念的部分還OK,但是遇到指標就真的投降... 指來指去的,搞得我都亂了,以下是書上的某個範例 減少版面所以只放有問題的地方 麻煩各位大大協助我破關@@ 謝謝^^ int main(void){ int temp=2; //宣告整數變數,並設定初值 int *ptr=&temp; //宣告變數指標,並設初值為指向 temp /*-----顯示 temp 的位址與值-----*/ cout << "The address of temp: " << &temp << endl; //&temp=tmep2的記憶體位址,假設temp2的記憶體位址為0012FF4C cout << "The value of temp: " << temp << endl << endl; //temp=2 這部分OK,上面有已經有宣告為整數。 ※到這裡為止 temp=2 *ptr=&temp=0012FF4C 而且書上不是寫變數前面加*代表指的是記憶體位址的"值" 可以照作者這樣宣告,不是代表*ptr是指向記憶體位址嗎? /*-----顯示 ptr 的位址、值與其值的位址所指向的值-----*/ cout << "The address of ptr : " << &ptr << endl;    //書上範例是寫輸出為0012FF40 <==不懂 我卡住的點在於,上面也沒有宣告ptr,如何取得ptr的記憶體位址 cout << "The value of ptr : " << ptr << endl; //問題點同上,書上的輸出是寫0012FF4C <==不懂 我卡住的點在於,取記憶體位址不是變數前面要加"&"嗎? cout << "The value of ptr's value address : " << *ptr << endl << endl; //書上範例寫的輸出是2 <==不懂 我卡住的點在於,一開始不是宣告*ptr=&temp 照理說*ptr不是應該會等於&temp=0012FF4C嗎? *ptr=3; //更改 ptr 指向位址整數的值,同temp=3 /*-----顯示 temp 與 ptr 的位址與值-----*/ cout << "After *ptr=3" << endl; cout << "The value of temp: " << temp << endl; //temp=3,這部分也OK cout << "The value of ptr's value addfress : " << *ptr << endl; //*ptr=3,這部分OK } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.171.31.229
james732:&ptr顯示的是指標自己的位置 (它自己也需要空間) 02/25 00:53
james732:ptr 沒加&的話,也就等於&temp 02/25 00:53
james732:*ptr就直接是temp的值了 02/25 00:53
tropical72:看完它。 02/25 00:58
diabloevagto:你需要稍微了解一下os的記憶體 02/25 00:59
worldmap:prt本身存放的就是記憶體的位置 所以不用+&就可以直接印 02/25 02:26
worldmap:0012FF4C 02/25 02:27