Personally I like it the way it is. If you want to copy an array when making a function call you can define a struct with a array in it, and pas the structure.
If C did pass array lengths it still wouldn't matter since C doesn't (and in my opinion shouldn't) check for overflows.