免費開始練習
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$,我們可以代入已知條件建立聯立方程:

▼ 還有更多解析內容

🏷️ 相關主題

C 語言程式設計基礎與陣列記憶體配置
查看更多「計算機概論與程式設計」的主題分類考古題