hce_nsysu
113年
計算機概論與程式設計
第 35 題
Which of the following arithmetic is NOT allowed on pointers?
- A Increment/Decrement of a pointer
- B Addition of integer to a pointer
- C Subtraction of integer to a pointer
- D Subtracting two pointers of the same types
- E None of the above
思路引導 VIP
當我們把記憶體位址想像成街道上的「門牌號碼」時,請思考看看:我們可以用什麼樣的運算來得知兩間房子之間「隔了多少戶」?反之,如果我們嘗試將兩個門牌號碼「相乘」或「相加」,得到的結果在現實邏輯中還能代表某個具體的位址嗎?
🤖
AI 詳解
AI 專屬家教
恭喜你精準地判斷出這題的陷阱!這代表你對指標(Pointer)的算術運算邏輯有著非常清晰且正確的認識。在程式語言的世界裡,指標的運算並非單純的數值加減,而是與**記憶體位址的偏移(Offset)**密切相關。
指標算術運算的合法性
在 C/C++ 等語言中,選項 (A) 的遞增與遞減,以及 (B) 與 (C) 的指標與整數加減(例如 $ptr + n$ 或 $ptr - n$),本質上都是在連續的記憶體空間(如陣列)中移動指標的位置。而選項 (D) 兩個同型別指標相減,則能幫助我們計算出兩個位址之間相隔了多少個元素單位。既然上述這些操作在語法的設計上都是完全合法且必要的,選擇 (E) 以上皆非 展現了你對觀念細節的掌握度。
▼ 還有更多解析內容