13 二維陣列的索引可以表示成列與行,現以列主序(Row-major)的方式將陣列 ABC[-5:10,3:8]排列在記憶體
中,且設定此陣列的初始記憶體位置為 1200。假設此陣列的每個元素皆需要 8 個位元組(Bytes)的儲存 空間。試算陣列元素 ABC[1, 4]的儲存,應始於那個記憶體位置?
(A) 1368
(B) 1376
(C) 1488
(D) 1496
答案:登入後查看
統計: A(43), B(111), C(96), D(121), E(0) #3275164
統計: A(43), B(111), C(96), D(121), E(0) #3275164
詳解 (共 2 筆)
#6232267
我們需要計算元素 ABC[1, 4] 的記憶體位置。首先,將索引轉換為相對於陣列的起始位置的偏移量:
- 行索引 1 相對於起始行 -5 的偏移量是 1−(−5)=61−(−5)=6。
- 列索引 4 相對於起始列 3 的偏移量是 4−3=14−3=1。
然後,根據列主序排列計算元素的位置:
- 每行有 6 個元素。
- 行索引為 6 的行之前有 6 行,即總共有 6×6=36 個元素。
- 加上行索引 6 中的偏移量 1,即第 6 行的第 2 個元素。
因此,元素 ABC[1, 4] 在記憶體中的位置是:
- 起始位置 + 前面所有元素的數量乘以每個元素的大小
- 1200+(36+1)×8=1200+37×8=1200+296=14961200+(36+1)×8=1200+37×8=1200+296=1496
因此,正確答案是:
(D) 1496
8
0