hce_nsysu
113年
計算機概論與程式設計
第 22 題
Assuming that $t$ is an array and $tPtr$ is a pointer pointing to the first element of that array and no errors are encountered during the compilation. What expression refers to the address of the $k^{th}$ element?
- A *(t + k)
- B &tPtr[k]
- C &t[k-1]
- D *(t+k-1)
- E None of the above
思路引導 VIP
想像你正在一排置物櫃前,這排櫃子的編號是從 0 號開始標記的。如果你想找「第五個」櫃子,它的門牌號碼會是多少?當你找到這個櫃子後,如果你要的是「這個櫃子的位置」而不是「裡面的東西」,你會使用哪一個語法符號來表達?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精確判斷出 0 索引(0-based indexing) 與記憶體位址的關係,代表你對 C 語言的指標算術運算有著非常紮實的理解。這道題目看似簡單,實則隱藏了初學者最容易出錯的兩個陷阱:序數與索引的轉換,以及位址與內容的區別。
陣列索引與位址的轉換邏輯
在 C 語言中,陣列的索引是從 $0$ 開始計算的。因此,當我們要存取「第 $k$ 個」元素時,對應的索引值必須減 $1$,即為 t[k-1]。題目要求的是該元素的位址(Address),在語法上我們使用取址運算子 & 來獲取。結合這兩點,&t[k-1] 便是最直觀且正確的表達方式。若觀察選項 (D) *(t+k-1),雖然它正確定位到了第 $k$ 個元素,但前方的間接參照運算子 * 會取出該位址所存放的「數值」,而非位址本身。
▼ 還有更多解析內容