A three dimensional array in ‘C’ is declared as int A[x][y][z]. Consider that array elements are stored in row major order and indexing begins from 0. Here, the address of an item at the location A[p][q][r] can be computed as follows (where w is the word length of an integer):
(A) &A + w(y * z * q + z * p + r)
(B) &A + w(y * z * p + z*q + r)
(C) &A + w(x * y * p + z * q+ r)
(D) &A + w(x * y * q + z * p + r)
Explanation: According to above question we have to find the address of A[p][q][r]
To reach pth row we must have to cross 0 to p-1 row i.e. p rows and each rows contains y∗z elements
Now to reach qth element in pth row we have to cross q rows and each row contains z(total columns) elements
to reach rth elements we have to cross r elements in (p+1)th row
Total elements to cross =(y∗z∗p+z∗q+r)
Now each element occupies m amount of space in memory
Therefore total space occupied by these elements = m(y∗z∗p+z∗q+r)
Hence , address of A[p][q][r]=base address+ Space Occupied by the Elements Before it.
Hence Option (B) is correct.
Quiz of this Question
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.