Por que matrizes em C decaem para ponteiros?

[Esta é uma pergunta inspirada em uma discussão recente em outro lugar, e eu darei uma resposta certa.]

Fiquei me perguntando sobre o estranho fenômeno C de matrizes "deteriorando" para ponteiros, por exemplo. quando usado como argumentos de função. Isso parece tão inseguro. Também é inconveniente passar o comprimento explicitamente com ele. E eupode passar o outro tipo de agregado - estruturas - perfeitamente bem por valor; estruturas não decaem.

Qual é a lógica por trás dessa decisão de design? Como isso se integra ao idioma? Por que há uma diferença nas estruturas?

questionAnswers(3)

yourAnswerToTheQuestion