How Do You Calculate the Memory Address of Temp[40,30,20] in a 3D Array?

  • Thread starter Thread starter acadian
  • Start date Start date
  • Tags Tags
    3d Array Memory
Join the discussion
Registration is free. Start your own thread to ask a follow-up.
2 replies · 16K views
acadian
Messages
3
Reaction score
0

Homework Statement



The problem is finding the memory location of a three-dimensional array Temp. Each index of temp goes from 1 to 100 and each element stores 4 bytes. The array is setup such that the last index varies fastest, aka:

Temp[1,1,1], Temp[1,1,2], ... Temp[1,1,100], Temp[1,2,1]
Temp[1,100,100], Temp[2,1,1], ... Temp[2,1,2], ... Temp[2,1,100], Temp[2,2,1], ... Temp[100,100,100]

Find the address of the array Temp[40,30,20]

Homework Equations



I know that For a three-dimensional array, the formula to compute the offset into memory is the following:

Address = BaseAddress + ((depthindex*col_size+colindex) * row_size + rowindex) * Element_Size

Attempted work

for the array Temp[40,30,20]

Address = BaseAddress + ((depthindex*col_size+colindex) * row_size + rowindex) * Element_Size

BaseAddress = m
Element_size = 4 bytes
Col_size = 100
Row_size = 100

Depthindex = 40
Colindex = 30
Rowindex = 20

Address = m + ( (40*100 + 30)*100 + 20 ) * 4 bytes
= m + ( (4030)*100 + 20 ) * 4 bytes
= m + (403020) * 4 bytes
= m + 1612080


Am I on the right track, here?

Thanks so much!
 
Physics news on Phys.org
Except that you're placing your first element off your starting address:

Address Temp[1,1,1]
Address = BaseAddress + ((1*100+1)*100+1)*4 = BaseAddress + 40404

we expected it to be BaseAddress, right?

Hint: that equation would be corrected if the indexes started at 0; as they start at 1 you need to... for each index in the formula