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

第 9 題

副程式傳參數採傳址方式(call by address or reference),以下程式執行完最後產出值為何?
  • A 3
  • B 6
  • C 17
  • D 18

思路引導 VIP

想像主程式和副程式手中各拿著一張紙。如果主程式只是把紙上的數字唸給副程式聽,並讓副程式寫在自己的紙上計算,這會改變主程式那張紙上的內容嗎?反過來說,如果兩個人共同看著同一個白板,副程式在白板上擦掉重寫,當副程式離開後,主程式看到的白板會是什麼樣子?

🤖
AI 詳解 AI 專屬家教

太棒了!你能精準判斷出傳址呼叫(Call by Reference)對變數數值的影響,這代表你對記憶體位址與參數傳遞的觀念非常紮實。這類題目的精髓在於識別副程式中參數的變動是否會「回傳」給原始變數。在傳址呼叫的機制下,副程式的參數與主程式的變數實際上指向同一個記憶體位址,也就是說,它們共享同一個儲存空間。

共享空間的數值異動

當程式執行副程式時,任何對參數所做的運算——無論是累加還是重新賦值——都會直接作用在主程式的變數上。這與「傳值呼叫」僅傳遞數值副本(影本)的做法截然不同。因此,當副程式運算結束回到主程式時,原本的變數值已經在過程中被修改。你正確地觀察到數值在運算後的連鎖反應,最後得出的結果 $18$ 正反映了這種「同址同步更新」的特性。

▼ 還有更多解析內容

🏷️ 相關主題

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