34 某個以列為主(row-major)儲存的三維陣列 A[3][4][5],若 A[0][2][4] 的位址是
,A[1][2][2] 的位址是
,則 A[2][1][2] 的位址為何?
(A)
(B)
(C)
(D)
統計: A(17), B(73), C(25), D(15), E(0) #2851816
詳解 (共 4 筆)
這個問題需要考慮到以列為主儲存的三維陣列的位址排列方式。假設陣列元素佔用的記憶體空間大小都是相同的,我們可以計算位址之間的差異來找到 A[2][1][2] 的位址。
首先,我們知道 A[0][2][4] 的位址是 2048,A[1][2][2] 的位址是 2084。
要找到 A[2][1][2] 的位址,我們需要考慮在記憶體中儲存這個三維陣列時,各維度的索引對位址的貢獻。
假設每個元素佔用的記憶體大小為 S,則:
- A[i][j][k] 的位址 = Base_Address + ((i * Dimension_2 * Dimension_3) + (j * Dimension_3) + k) * S
其中,
Base_Address 是陣列的起始位址。
Dimension_2 是第二維度的大小(4,在這個情況下)。
Dimension_3 是第三維度的大小(5,在這個情況下)。
i、j、k 是索引。
S 是每個元素佔用的記憶體大小。
現在我們已知 A[0][2][4] 的位址是 2048(Base_Address + ((0 * 4 * 5) + (2 * 5) + 4) * S = 2048),A[1][2][2] 的位址是 2084(Base_Address + ((1 * 4 * 5) + (2 * 5) + 2) * S = 2084)。
我們可以用這兩個方程式來求解 S:
1. 2048 = Base_Address + [(0 * 4 * 5) + (2 * 5) + 4] * S
2. 2084 = Base_Address + [(1 * 4 * 5) + (2 * 5) + 2] * S
Base_Address = 2020,S = 2
2020 + [(2 * 4 * 5) + (1 * 5) + 2] * 2 = 2114