Re: [請益] call by value, call ref, call by name
※ 引述《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
討論串 (同標題文章)
Programming 近期熱門文章
PTT數位生活區 即時熱門文章