Passing array by value vs. reference

Arrays are never passed by value. the rule is "arrays decay into pointers, when passed to a function". (The array name is a pointer to the first element).

You can pass structures by value though, so if you put your array as the only member of a struct, then you can pass it by value or reference.