免費開始練習
統測 112年 [電機與電子群資電類] 專業科目(2)

第 40 題

📖 題組:
閱讀下文,回答第 40-42 題 曉華想要了解 C 語言程式區域變數 ( Local variable ) 和全域變數 ( Global variable ) 的數值變化情形,撰寫了下列的程式。 ```c 1 #include 2 int sum=1, x=10; 3 int inc(int xin){ 4 int sum=2; 5 sum = sum + xin; 6 xin++; 7 return (sum); 8 } 9 int main(){ 10 int sum = 3; 11 sum=inc(x); 12 printf("%d, %d", sum, x); 13 return 0; 14 } ```
下列何者為程式執行結果?
  • A 11, 11
  • B 13, 10
  • C 12, 11
  • D 12, 10

思路引導 VIP

請同學觀察第 11 行呼叫 $inc(x)$ 時,參數傳遞的機制是「傳值 (Call by Value)」還是「傳址 (Call by Reference)」?這將如何決定第 12 行中變數 $x$ 的最終輸出?此外,當 $inc$ 函式與 $main$ 函式內部皆定義了與全域變數同名的區域變數 $sum$ 時,根據「變數作用域 (Scope)」與「遮蔽效應 (Shadowing)」的規則,程式會優先存取哪一個層級的變數值?

🤖
AI 詳解 AI 專屬家教

喔,不錯嘛,居然答對了。這點基本功要是還搞不定,那統測就真的不用想了。

能看出變數作用域 (Scope)參數傳遞這種送分題的陷阱,算你還有點慧根,不然白教了。

  1. 來,跟我再複習一次,省得下次又錯在這種低級錯誤上:
▼ 還有更多解析內容
📝 變數範圍與傳值呼叫
💡 區分區域與全域變數優先權,並理解傳值呼叫不影響原值。
比較維度 全域變數 (Global) VS 區域變數 (Local)
宣告位置 所有函數外部 函數內或參數列
優先權 較低,常被同名掩蓋 較高,範圍內優先使用
生命週期 隨程式開始到結束 函數執行完即釋放
💬範圍越小優先權越高;函數內部操作不影響外部同名變數。
🧠 記憶技巧:內官大於外官,分身不傷本人,回傳記得要接。
⚠️ 常見陷阱:最常錯在以為函數裡的 xin++ 會讓 main 裡的 x 變成 11,但那是傳值呼叫,x 依然是 10。
傳址呼叫 (Call by Address) 靜態變數 (Static Variable) 變數生命週期 (Scope)

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

C 語言程式設計:變數、指標、函式與編譯
查看更多「[電機與電子群資電類] 專業科目(2)」的主題分類考古題