免費開始練習
moea_joint 114年 [資訊] 計算機原理、網路概論

第 14 題

執行下列 C 語言程式,輸出的值為何?
#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 始終保持原值,不會受到任何影響。

▼ 還有更多解析內容

🏷️ 相關主題

資料結構:陣列、鏈結串列、樹與圖
查看更多「[資訊] 計算機原理、網路概論」的主題分類考古題