免費開始練習
統測 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. 來,跟我再複習一次,省得下次又錯在這種低級錯誤上:
▼ 還有更多解析內容

升級 VIP 解鎖