*x
refers to the first array ({1,2,3,4,5}), and is equivalent to x[0]. Adding one to x
move to the next array, so *(x+1)
would refer to the second array, and would be equivalent to x[1].
*(*x + 2)
is therefore the third element in the first array, which is 3. This means that *(*x + 2) + 5
is equal to 8.
The parentheses matter a lot, for example *(*(x+2))
would be the first element in the third array.
*(*x + 2)
results in the same value as *(*x) + 2
, but does not use the same element of the array.