[問題] function的問題

看板C_and_CPP作者 (Shane)時間10年前 (2014/03/25 17:17), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/3 (看更多)
應該是基本的觀念問題,但我沒學好.. 就是為何函式傳參數進去但沒有改變原始的值 void dd(int x); int main() { int yes=0; dd(yes); cout<<yes; return 0; } void dd(int x) { x=50+50; } 我認為最後yes應該要是100,但還是0,有改寫成 void(int x, int y) { x=50+50 y=x; } 並在main裡用另一個值yes2當第二個參數傳入,最終也沒改變 雖然改成int dd(int x)可以 而如果函式傳兩個以上參數且都需要回傳,改成return陣列也可以 但想知道為何不會改變原始傳進去的值,如: yes 但用一些library,類似OpenCV,類似void cvSmooth(src, dst...) 就可 請問是為什麼? 我哪邊的觀念卡住了? 感恩! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 202.39.79.208 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1395739075.A.579.html ※ 編輯: xshane831 來自: 202.39.79.208 (03/25 17:18)

03/25 17:20, , 1F
Pass by value的經典問題。這個很多人在問的。
03/25 17:20, 1F

03/25 17:31, , 2F
感謝 剛google了 傳值、記憶體複製問題 基本觀念要加強.
03/25 17:31, 2F

03/25 20:29, , 3F
傳參考值才是你要的
03/25 20:29, 3F
文章代碼(AID): #1JCKd3Lv (C_and_CPP)
文章代碼(AID): #1JCKd3Lv (C_and_CPP)