As in your original example the array is passed by value then a copy of the address of the first element is created.
It is semantically equivalent to the statement
int *x = new int;
that is a copy of the address of the first element of unnamed array is assigned to x.
Take into account that if you have an array as for example
then using the name of an array as for example
*a = 10;
means that name a is implicitly converted to the address of the first element of the array. The same mechanism works then the name is passed to a function but in this last case a copy of the address of the first element of the array is created. So changing this copy does not change the original value of the array name.