No, it is not.
&array
is of type pointer to char[SOME_SIZE]
(in the first example given). This means &array + 1
points to memory immediately past the end of array
. Dereferencing that (as in (*(&array+1))
gives undefined behaviour.
No need to analyse further. Once there is any part of an expression that gives undefined behaviour, the whole expression does.