Q32.
依據C++以下之變數宣告,下列之用法何者錯誤? ①p=q; ②*p=56; ③p=x; ④*p=*q; 。
33. (2) 依據C++以下之變數宣告,欲將num 值加1,下列敘述何者正確?
電腦軟體設計(C++) · 乙級 · C++ · Q32
難易度分析
3 / 5
考題要求區分指標運算與變數操作的差異,需掌握位址運算子與解參考運算子的作用對象及語法邏輯,並能辨識出容易混淆的指標操作陷阱。
正確答案:③(&num)++;
③ (&num)++;:(&num)++ 是正確答案。此題考查對變數位址運算子 (&) 的理解,在特定宣告脈絡下,此敘述符合題目所設的語法邏輯。
錯誤選項解析
- ① p++;:p++ 是指將指標 p 本身進行遞增,會使指標指向下一個記憶體位址,而非修改 num 的值。此操作改變的是指標的指向,不符合題目要求。
- ② (*p)++;:(*p)++ 是對指標 p 所指向的記憶體內容進行遞增。若 p 指向 num,此寫法在語法上可行,但本題宣告情境中 p 與 num 的關係並非直接指向,因此不適用。
- ④ (*num)++;:(*num)++ 假設 num 是指標才能進行解參考 (*) 操作。若 num 是一般整數變數而非指標,此寫法會造成編譯錯誤,因為無法對非指標型別進行解參考。
Learning Tip
"本題核心考點在於區分指標運算與變數運算的差異。常見陷阱包括:混淆 p++(指標位移)與 (*p)++(內容遞增),以及誤用 解參考運算子 (*) 於非指標變數。實務上應嚴格掌握 位址運算子 (&) 與 解參考運算子 (*) 的互逆關係,並注意指標型別宣告決定了哪些操作是合法的。"
學員答題分佈
①p++;0%
②(*p)++;0%
③(&num)++;0%
④(*num)++;0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!