Re: [問題] 指標卡關了><

看板C_and_CPP作者 (非天夜翔)時間13年前 (2012/02/24 17:16), 編輯推噓3(300)
留言3則, 3人參與, 最新討論串3/3 (看更多)
※ 引述《don750421 (1+1≠2)》之銘言: : 最近剛踏入C++的懷抱? : 前面概念的部分還OK,但是遇到指標就真的投降... : 指來指去的,搞得我都亂了,以下是書上的某個範例 : 減少版面所以只放有問題的地方 : 麻煩各位大大協助我破關@@ : 謝謝^^ : int main(void){ : int temp=2; //宣告整數變數,並設定初值 : int *ptr=&temp; //宣告變數指標,並設初值為指向 temp int *ptr=&temp; 等同於 int *ptr; // 宣告一個名為 "ptr" 的 pointer of int ptr = &temp; // 讀取 address of "temp", 並由 "ptr" 儲存 所以 temp ┌────┐0012FF4C │ 3│↑ └────┘│ ┌─┘ ptr │ ┌───┼┐0012FF40 │0012FF4C│ └────┘ : /*-----顯示 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 <==不懂 : 我卡住的點在於,取記憶體位址不是變數前面要加"&"嗎? 這是ptr所存放的內容 所以這個目前是 temp 的位址 : cout << "The value of ptr's value address : " << *ptr << endl << endl; : //書上範例寫的輸出是2 <==不懂 : 我卡住的點在於,一開始不是宣告*ptr=&temp : 照理說*ptr不是應該會等於&temp=0012FF4C嗎? *ptr 是意思是 讀取 ptr 所存放的位址 並前往該位址讀取存放的資料 : *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: 1.164.90.13

02/25 06:43, , 1F
一圖勝千言。我都流淚了。
02/25 06:43, 1F

02/26 23:36, , 2F
推! 指標要真的了解, 就要有如圖示的觀念
02/26 23:36, 2F

02/27 12:54, , 3F
推:)
02/27 12:54, 3F
文章代碼(AID): #1FHyNvfk (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
問題
2
8
完整討論串 (本文為第 3 之 3 篇):
問題
2
8
文章代碼(AID): #1FHyNvfk (C_and_CPP)