In C, a function automatically decays to a pointer to function, and an array to a pointer to its first element. However, structs and unions don't decay to pointers to themselves.
My question is: Why decay rules were designed like this? I mainly (but not completely) expect quotes from K&R, or from the committee, so this question is not primarily opinion-based.