When entire arrays are passed to a function, they are passed by reference, because the array name is actually the pointer to the elements in memory - so any changes to the array in the function actually changes the array.
If you just pass an individual element it is passed by value, and the individual element value can be returned by a function.