普考-資訊處理計算機概要104 年第 22 題單選題考點:指標交換考點:call by value 誤判
下列是 C 語言之函數 fun2,當此函數被呼叫時,傳入參數 num1 和 num2 分別為 5 和 55,請問此函數執行完畢後,num1 和 num2 分別為多少? void fun2 (int *num1, int *num2) { int num3 = *num1; *num1 = *num2; *num2 = num3; }
A55 和 5正確答案
B5 和 55
C5 和 5
D55 和 55
A正確答案
這是經典的 pointer swap(指標交換)函數,透過指標交換兩變數的值,5 和 55 交換後變成 55 和 5。
逐選項解析
A55 和 5指標交換✓ 正確
正解。num3 先暫存 num1 的值 5,接著把 num2 的值 55 寫入 num1,最後把 num3 的 5 寫入 num2,完成交換。因為傳的是指標,變動會反映到原變數。
B5 和 55call by value 誤判✕ 易錯陷阱
陷阱選項。若誤以為 C 是 call by value(傳值),函數內變動不會影響外部,就會選此答案。但此題傳的是 int* 指標,屬 call by address,會真的改到原變數。
立即註冊,看完整詳解
這題的完整詳解,註冊就能看 · 每天 2 題免費
精選詳解- 完整逐選項解析
- 秒殺解題技巧與破題關鍵
- 關鍵知識表整理
- 陷阱與易錯提醒
- 同考點歷屆題庫連續刷題與錯題本