Можно назначить структуру другому, что приводит к копированию всех значений из структуры в другую:
struct
{
int a, b, c;
} a, b;
...
a = b;
Но почему массивы не назначаются следующим образом:
int a[3], b[3];
...
a = b;
Потому что, строго говоря, строятся массивы с переменными размерами, поэтому почему это не разрешено? В любом случае такое назначение не используется. Конечно, может показаться, что задействованы только адреса, но можно легко копировать массивы таким образом ( "статически" ).