Machine-translated by Google. Questions are authored in English.
Top

Discussion

What would be the equivalent pointer expression for referring the array element a[i][j][k][l]

  • A.((((a+i)+j)+k)+l)
  • B.*(*(*(*(a+i)+j)+k)+l)
  • C.(((a+i)+j)+k+l)
  • D.((a+i)+j+k+l)

Answer: B

Correct answer: *(*(*(*(a+i)+j)+k)+l)

Each subscript is defined as a dereference of a sum: x[y] means *(x+y). Applying that rule four times, from the outside in, gives one dereference for every subscript.

\[ a[i][j][k][l] \equiv *(*(*(*(a+i)+j)+k)+l) \]

The options without the asterisks compute addresses but never read through them. Note that the pointer arithmetic is scaled by the size of the sub-array at each level, which is why the array's dimensions must be known to the compiler.

No comment is present. Be the first to comment.
Loading…

Post your comment

Please log in or register to post a comment.