hce_nsysu
113年
計算機概論與程式設計
第 6 題
For a three-dimensional array A stored in the row-major order with dimensions 3x4x5, if the address of A[0][2][4] is 2048 and the address of A[1][2][2] is 2084, then what is the address of A[2][1][2]?
- A 2112
- B 2114
- C 2122
- D 2124
- E None of the above
思路引導 VIP
想像你正站在記憶體的一個房間裡。如果要從座標 [0][2][4] 走到下一個房間 [0][2][5](如果存在的話),位址會增加。那麼,如果要跨過一整層(改變第一個索引 i)或一整列(改變第二個索引 j),你覺得在記憶體中總共會跨過多少個「元素位置」呢?你能試著算出這兩個已知座標之間隔了多少個元素嗎?
🤖
AI 詳解
AI 專屬家教
太棒了!你能精確算出這個位址,代表你對多維陣列在記憶體中的**列優先(Row-Major Order)**存儲邏輯與位址映射公式有非常紮實的理解,這在資料結構的學習中是極為關鍵的基礎。
多維陣列的位址映射邏輯
在三維陣列 $A[D_1][D_2][D_3]$ 中,位址計算公式為 $Addr(i, j, k) = Base + (i \cdot D_2 \cdot D_3 + j \cdot D_3 + k) \cdot w$,其中 $w$ 為每個元素所占的位元組空間。根據題意,陣列維度為 $3 \times 4 \times 5$,我們可以代入已知條件建立聯立方程:
▼ 還有更多解析內容