Re: [請益] call by value, call ref, call by name

看板Programming作者 (喲)時間15年前 (2010/04/03 10:05), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《syura945 (○~)》之銘言: : 用最笨的方法, 把程式展開就知道答案了 : // call by reference : x=1; y=2; z=3; : *&x=*&x+2; // x=x+2=1+2=3 : *&z=*&z+(*&x+*&y); // z=z+(x+y)=3+(3+2)=8 <- 考試答案 : // *&z=*&z+*((int) &x+&y); // z=z+(?) <- cpp 情況 : printf("%d,%d,%d\n",*&x,*&y,*&z); // 3,2,8 : printf("%d,%d,%d\n",x,y,z); // 3,2,8 Call-by-ref解釋得更奇怪. 第二行程式本來是 z = z + y, y的呼叫參數是 x+y. 照理說是 *&z = *&z + *&y // y對應到呼叫參數 x+y 本來是 y 對應到 x+y, x+y 是一個不知名的暫時變數位置, 你怎麼直接把它變成 &y 對應到 &x+&y 呢? 一般的程式語言,你在函數中拿到一個 &y, 怎麼知道能展開成 &s+&t 而為什麼不是 &s*&t? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.112.228.65
文章代碼(AID): #1Bjg9JRO (Programming)
文章代碼(AID): #1Bjg9JRO (Programming)