Моя перша здогадка про причину була просто через причини продуктивності та збереження пам'яті, а також для простоти реалізації компілятора (особливо для типу комп'ютерів у той час, коли був винайдений C). Передача величезних масивів "за значенням", здається, має величезний вплив на стек, для кожного виклику функції потрібна повна операція копіювання масиву, і, ймовірно, компілятор повинен бути розумнішим, щоб вивести правильний код складання (хоча останній пункт є дискусійним) . Було б також складніше трактувати динамічно розподілені масиви так само, як і статично розподілені масиви (з точки зору синтаксису мови).
EDIT: після прочитання деяких частин за цим посиланням , я думаю , що реальна причина (і причина , чому масиви структур розглядаються як типи значень, в той час як єдині масиви ні) є зворотною сумісністю з C попередник B . Ось цитата від Денніса Річі:
[...} Рішення стало вирішальним стрибком еволюційного ланцюга між безтиповим BCPL та типізованим C. Це усунуло матеріалізацію вказівника на сховищі, а натомість спричинило створення покажчика, коли ім'я масиву згадується у виразі. Правило, яке збереглося в сьогоднішньому С, полягає в тому, що значення типу масиву перетворюються, коли вони з'являються в виразах, в покажчики до першого з об'єктів, що складають масив.
Цей винахід дав можливість більшості існуючих код B продовжувати працювати, незважаючи на зміну основної мови в семантиці мови. [..]