34 某個以列為主(row-major)儲存的三維陣列 A[3][4][5],若 A[0][2][4] 的位址是61dbafa5747bd.jpg,A[1][2][2] 的位址是61dbafb484974.jpg,則 A[2][1][2] 的位址為何?
(A)61dbafd6b830f.jpg
(B)61dbafe15217f.jpg
(C)61dbafe834f22.jpg
(D)61dbafee2f774.jpg

答案:登入後查看
統計: A(17), B(73), C(25), D(15), E(0) #2851816

詳解 (共 4 筆)

#5416896
考二維就已經很麻煩了-.-不過至少這題有...
(共 408 字,隱藏中)
前往觀看
10
0
#5456668
A[3][4][5]A[0][2][4]...


(共 168 字,隱藏中)
前往觀看
6
0
#5548905
A[1][2][4]跟A[0][2][4...
(共 189 字,隱藏中)
前往觀看
5
1
#5977672

這個問題需要考慮到以列為主儲存的三維陣列的位址排列方式。假設陣列元素佔用的記憶體空間大小都是相同的,我們可以計算位址之間的差異來找到 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

3
0

私人筆記 (共 1 筆)

私人筆記#4124755
未解鎖
A[3][4][5]A[0][2][4]...


(共 166 字,隱藏中)
前往觀看
0
1