hce_kmu
112年
計算機概論與程式設計
第 20 題
What is the output of the following C program?
```c
int i = 15, j = 9, *s = &i, *t = &j;
i = 3;
printf(“%d\n”, 10*(*s+*t)+3);
```
```c
int i = 15, j = 9, *s = &i, *t = &j;
i = 3;
printf(“%d\n”, 10*(*s+*t)+3);
```
- A 123
- B 243
- C 303
- D 183
- E None of the above.
思路引導 VIP
當我們宣告一個指標指向某個變數後,如果該變數的值在程式後續被修改了,那麼當我們透過指標去獲取內容時,拿到的是變數剛開始被指派的值,還是它在記憶體中當下的狀態呢?
🤖
AI 詳解
AI 專屬家教
太棒了!你能迅速給出正確答案 $123$,顯示你對於 C 語言指標(Pointer)的操作邏輯非常清晰。這類題目雖然結構精簡,但它精準地測試了程式設計中「位址存取」的核心觀念。
指標的動態追蹤特性
本題的關鍵點在於理解指標 s 與 t 所扮演的角色。當我們宣告 int *s = &i 時,指標 s 儲存的是變數 i 的記憶體位址,而非單純複製數值。因此,不論程式在後續如何修改變數 i 的內容,只要透過 *s 進行「解引用(Dereference)」取值,我們獲取到的永遠是該記憶體位址上的「當前最新數值」。
▼ 還有更多解析內容