You all are missing the point as to what the cost of passing arrays by value
or what other languages do.
C is implicitly a pass/return by value language for EVERY SINGLE POSSIBLE
DATATYPE WITH THE EXCEPTION OF ARRAYS.
Arrays are special for no reason other than it was thought to costly to do
it any otherway. In fact, had it not been kludged up into a
pseudo-pass-by-reference,
nobody would have probably been the wiser. It was too hard to pass/return
structs by value either in the initial compilers, but they fixed it to work
exactly that way.
So we have this array kludge that works differently than everything else.
Further, due to the kludgosity, it's not even exactly type safe.