$4.2/1 - "An lvalue or rvalue of type “array ofN T” or “array of unknown bound of T” can be converted to an rvalue of type “pointer to T.” The result is a pointer to the first element of the array."
I am not sure how do we get an rvalue of an array type other than during initialization/declaration?
You cannot get an rvalue of array type. Arrays can only be lvalues, and whenever they are used in an lvalue they decay to a pointer to the first element.
The expression
arrayin [1] is an lvalue of typeint (&)[10]that gets converted to an rvalue of typeint *p, that is, the rvalue array of N==10 T==int is converted to an lvalue of type pointer to T==int.