C: Why can you pass (to a function) a struct by value, but not an array?
<p>Any historical or logical reasons behind it?</p>

<hr>

<p>Explanation: 
when you pass an array to a function in C you actually only pass a pointer to an array.
However, when you pass a struct, you can either pass a copy of the struct or the pointer. </p>

<pre><code>//this:
int function(int array[10])
// is equivalent to this:
int function(int *array)
//and they both pass a pointer

//but this:
int function(struct tag name)
//passes a struct by value, where as this:
int function(struct tag *name)
//passes a pointer to it.
</code></pre>

<p>Why the difference?</p>