Re: [問題] 指標卡關了><
※ 引述《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
討論串 (同標題文章)