z[0]
gives you the first element of the array by value and when you prepend an ampersand &
to the expression, you get the address of that element which renders the same result of the first case.x
, the array, is truly just a pointer while x[0]
, an element, is an actual value. This is just one of the many examples of multiple ways of saying the same thing in C (kind of like English).