作者don750421 (1+1≠2)
看板C_and_CPP
標題[問題] 指標卡關了><
時間Sat Feb 25 00:51:28 2012
最近剛踏入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