Q53.
對於以下C 程式,執行後輸出是那一個?
電腦軟體設計(C++) · 乙級 · C++ · Q53
難易度分析
3 / 5
本題要求分析指標運算子與取值運算子的優先順序,並結合二維陣列在記憶體中的配置方式進行推論,考驗對指標位移邏輯的精確掌握。
正確答案:②2
② 2:指標算術運算中,`++p` 使指標從 `num[0][0]`(值為1)前進至 `num[0][1]`(值為2),接著 `*` 取值運算子取得該位置的值 `2`,故輸出為 `2`。
錯誤選項解析
- ① 1:前置遞增運算子 `++p` 會先將指標 `p` 指向下一個記憶體位置(從 `num[0][0]` 移至 `num[0][1]`),再進行取值,因此結果不是 `1`。
- ③ 3:若要輸出 `3`,指標需遞增兩次指向 `num[0][2]`,但此程式僅執行一次 `++p`,故不會輸出 `3`。
- ④ 4:若要輸出 `4`,指標需指向第二列的 `num[1][0]`,但 `++p` 僅在同一列內前進一個元素位置,不會跨列跳轉。
Learning Tip
"此題考指標遞增運算子 `++p` 與取值運算子 `*` 的優先順序。`*++p` 等同於 `*(++p)`,先遞增指標再取值。二維陣列在記憶體中是連續配置,`num[0][0]` 之後緊接 `num[0][1]`,需清楚指標算術的移動單位是元素型別的大小。常考陷阱是混淆 `*p++`(先取值後遞增)與 `*++p`(先遞增後取值)的差異。"
學員答題分佈
①10%
②20%
③30%
④40%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!