[理工] [資結] 參數傳遞

看板Grad-ProbAsk作者 (小銓)時間14年前 (2012/01/11 17:22), 編輯推噓1(103)
留言4則, 1人參與, 最新討論串1/1
有點不太能理解 pass by value result and pass by name 可否像各位請教一下 以下題目 小弟解決的是否有誤 //Gloval var int i,a[2]; void p(int x,int y){x++;i++;y++} int main() { a[0]=3;a[1]=5;i=0; p(a[i],a[i]); printf("%d\n",a[0]); printf("%d\n",a[1]); system("pause"); return 0; } 如果是使用 Pass by value result 會印出 4 , 5 如果是使用 Pass by name 會印出 4 , 6 請問這樣有錯嗎 還有是否有詳細一點的解釋 (很少使用這兩種參數傳遞 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.105.105 ※ 編輯: learnerQQ 來自: 140.123.105.105 (01/11 17:24)

01/11 21:01, , 1F
p(a[i],a[i]); 如果是這樣的話 是cal by value 是5,5吧
01/11 21:01, 1F

01/11 21:03, , 2F
傳進去是a[0],a[0] 即使i++ 變的還是a[0]
01/11 21:03, 2F

01/11 21:06, , 3F
call by name 想成我要用"值"的時候 都要在去重拿最新的
01/11 21:06, 3F

01/11 21:07, , 4F
所以是4,6 一些拙見 ..
01/11 21:07, 4F
文章代碼(AID): #1F3LJl-G (Grad-ProbAsk)