[問題] 指標疑問

看板C_and_CPP作者 (one)時間10年前 (2014/02/11 12:20), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/2 (看更多)
程式碼如下: void f(int *p, int a[]) { p = a; cout<<"(f) "<<"p = "<<p<<" ,*p = "<<*(p)<<endl; } int main() { int a[] = {1,3,5,7}; int *p = &a[1]; cout<<"(1) "<<"p = "<<p<<" ,*p = "<<*(p)<<endl; f(p,a); cout<<"(2) "<<"p = "<<p<<" ,*p = "<<*(p)<<endl; p++; cout<<"(3) "<<"p = "<<p<<" ,*p = "<<*(p)<<endl } 執行結果如下: (1) p = 0x28fef0 ,*p = 3..............第一行 (f) p = 0x28feec ,*p = 1..............第二行 (2) p = 0x28fef0 ,*p = 3..............第三行 (3) p = 0x28fef4 ,*p = 5..............第四行 問題: 我的問題在執行結果的第2行與第3行 想問為什麼 *p 的值在函式中明明已經被改變了 但離開函式後馬上再印出來卻又回復了 已經困擾小弟我很多天了 麻煩版上的大大能幫幫忙~ THANKS!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.184.233.166

02/11 12:34, , 1F
因為你還是pass by value阿 f(p,a)裡面的那份p也只是你
02/11 12:34, 1F

02/11 12:34, , 2F
pointer的一個copy
02/11 12:34, 2F

02/11 13:39, , 3F
原來如此~ 感恩感恩
02/11 13:39, 3F
文章代碼(AID): #1I-QJqfp (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1I-QJqfp (C_and_CPP)