[問題] 指標卡關了><

看板C_and_CPP作者 (1+1≠2)時間13年前 (2012/02/24 16:51), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串1/3 (看更多)
最近剛踏入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

02/25 00:53, , 1F
&ptr顯示的是指標自己的位置 (它自己也需要空間)
02/25 00:53, 1F

02/25 00:53, , 2F
ptr 沒加&的話,也就等於&temp
02/25 00:53, 2F

02/25 00:53, , 3F
*ptr就直接是temp的值了
02/25 00:53, 3F

02/25 00:58, , 5F
看完它。
02/25 00:58, 5F

02/25 00:59, , 6F
你需要稍微了解一下os的記憶體
02/25 00:59, 6F

02/25 02:26, , 7F
prt本身存放的就是記憶體的位置 所以不用+&就可以直接印
02/25 02:26, 7F

02/25 02:27, , 8F
0012FF4C
02/25 02:27, 8F
文章代碼(AID): #1FHy0KqH (C_and_CPP)
討論串 (同標題文章)
以下文章回應了本文
完整討論串 (本文為第 1 之 3 篇):
問題
2
8
文章代碼(AID): #1FHy0KqH (C_and_CPP)