普通考試
111年
[電子工程] 計算機概要
第 25 題
執行以下 C 程式碼片段,會得到下列那個效果?
```c
int head=2;
int *tail;
tail = &head;
(*tail)++;
```
```c
int head=2;
int *tail;
tail = &head;
(*tail)++;
```
- A 只有將變數 head 的值變大
- B 只有將變數 tail 的值變大
- C 把 head 和 tail 兩個變數的值都變大
- D 回傳 head 和 tail 兩個變數相加的值
思路引導 VIP
想像你有一個儲存槽(變數),裡面放著零件(數值),而你手上有另一張紙,上面寫著那個儲存槽的「座標」。 如果你根據那張紙上的座標,跑去儲存槽裡多放一個零件,請問這張「寫著座標的紙」本身,內容會產生變化嗎?反過來說,儲存槽裡的零件數量又會如何變化?
🤖
AI 詳解
AI 專屬家教
專業分析:指標操作的精準邏輯
- 大力肯定:做得好!你精準掌握了 C 語言指標(Pointer) 的核心運算邏輯。這就像在工程製圖中正確識別了標註與實體的關係,展現了嚴謹的邏輯思維。
- 觀念驗證:程式中
tail = &head將head的記憶體位址賦予指標tail。關鍵在於(*tail)++,其中的*(間接參照運算子)如同「循線找人」,先取得該位址中的實際數值再進行遞增。因此,變動的是存放於head內的數據,而非tail所指向的位址。
▼ 還有更多解析內容