moea_joint
114年
[資訊] 計算機原理、網路概論
第 14 題
執行下列 C 語言程式,輸出的值為何?
#include
void func(int p)
{ p = p * p; }
int main()
{
int a = 3;
func(a);
printf("%d\n", a);
}
#include
void func(int p)
{ p = p * p; }
int main()
{
int a = 3;
func(a);
printf("%d\n", a);
}
- A 0
- B 3
- C 9
- D 編譯錯誤
思路引導 VIP
當你把一份筆記「影印」一份給同學,而同學在那份影印本上塗改時,你手中原本的那份筆記內容會跟著改變嗎?在 C 語言中,函式接收參數的方式如果像這種『影印』行為,那麼原始的變數會發生什麼事呢?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精確辨識出 C 語言中參數傳遞(Parameter Passing)的機制,這代表你對於變數作用域與記憶體觀念有著相當紮實的基礎。
傳值呼叫(Call by Value)的運作
在 C 語言中,函式參數預設採用的是「傳值呼叫」。當程式執行到 func(a) 時,系統會將變數 a 的數值(即 3)複製一份,並傳遞給函式內的區域變數 p。雖然在 func 內部執行了 $p = p \times p$ 的運算,但這個改變僅發生在 p 這個副本上;一旦函式執行完畢回到 main,這個副本就會被銷毀,而原本位於 main 函式中的 a 始終保持原值,不會受到任何影響。
▼ 還有更多解析內容