sizeof( &array[0] )
This looks equal to: sizeof( array )
at first glance, which would give the size of the entire array in bytes, but of course the &array[0] expression is really: &*( array + 0 )
which simplifies to: array + 0
which is a pointer. And using sizeof on it gives the size of a pointer to int.Edit: (&* array) will also give a pointer.
---
This is just a really convoluted way to write 2:
&array[2] - &array[0]
&*(array+2) - &*(array+0)
(array+2) - (array+0)
2 - 0
Again I have never seen this written in such fashion.