地特四等申論題
105年
[資訊處理] 程式設計概要
第 null 題
📖 題組:
如果我們採取不同參數傳遞的方法,請回答下面程式執行的結果:(每小題 4 分,共 12 分)
(一) pass-by-reference
(二) pass-by-name
(三) pass-by-value-result
如果我們採取不同參數傳遞的方法,請回答下面程式執行的結果:(每小題 4 分,共 12 分)
(一) pass-by-reference
(二) pass-by-name
(三) pass-by-value-result
int y=1, x=1;
int fun(int a, int b) {b+=a; a=b+x; return a;}
void main()
{ int x=2;
y=fun(x, y) + y;
printf(“x=%d, y=%d”, x, y);
}
null
📝 此題為申論題
思路引導 VIP
遇到這類參數傳遞題型,首先釐清「全域變數」與「區域變數」的作用域,並確立運算式的求值順序(通常假設由左至右先計算函數副作用)。接著針對傳參考與傳值結果進行推導;而「傳名呼叫」則要特別注意考題刻意設計的同名變數 x,通常是為了測驗巨集展開所造成的「名稱捕獲 (Name Capture)」現象。
🤖
AI 詳解
AI 專屬家教
【解題關鍵】釐清各參數傳遞機制對變數的讀寫時機與作用域,特別注意本題刻意設計全域與區域變數同名 x,在傳名呼叫中易引發「名稱捕獲 (Name Capture)」;計算時假設運算式依由左至右順序求值。
【解答】
初始狀態:
▼ 還有更多解析內容