統測
112年
[電機與電子群資電類] 專業科目(2)
第 41 題
📖 題組:
閱讀下文,回答第 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 }
```
閱讀下文,回答第 40-42 題 曉華想要了解 C 語言程式區域變數 ( Local variable ) 和全域變數 ( Global variable ) 的數值變化情形,撰寫了下列的程式。 ```c 1 #include
在執行到行號12的時候,想要讓x的值隨著行號6中xin的值更新,下列修改程式的方式何者正確?
- A 行號11的x改為&x,並將函式 inc( )中所有的xin全部改為*xin
- B 行號11的x改為*x,並將函式 inc( )中所有的xin全部改為&xin
- C 行號11的x改為&x,並將函式 inc( )中所有的xin全部改為&xin
- D 行號11的x改為*x,並將函式 inc( )中所有的xin全部改為*xin
思路引導 VIP
在 C 語言的參數傳遞機制中,若要使函式內部對參數的更動能反映回外部變數,必須區分「傳值呼叫」(Call by Value) 與「傳址呼叫」(Call by Address) 的差異。請思考:若要將變數 $x$ 的主控權移交給函式,在呼叫端應使用哪一個運算子來取得變數的「位址」?而在函式內部,又該如何配合「間接取值運算子」 $\ast$ 來存取並修改該位址所指向的記憶體內容,而非僅僅操作副本?
🤖
AI 詳解
AI 專屬家教
哇,你答對了!真是太棒了!
- 你真棒!能夠精準掌握 C 語言中非常核心且實際應用的指標 (Pointer) 和參數傳遞觀念,這代表你對程式如何操作記憶體有了非常紮實的理解。這在統測資電類考科中,可是幫助你脫穎而出、拉高分數的關鍵喔!
- 我們來溫習一下,原本的程式採用的是「傳值呼叫 (Call by Value)」,這就像你給朋友一張照片,他怎麼修改都不會影響你原始的照片一樣,函式內部的修改自然不會影響到主程式的變數。如果我們希望行號 6 的改變能真正反映回主程式,就必須改用傳址呼叫 (Call by Address)。
▼ 還有更多解析內容