Инициализация массива C во время, отличное от объявления?

Я знаю, что в C я могу сделать следующее.

int test[5] = {1, 2, 3, 4, 5};

Теперь это допустимо только при объявлении массива. Однако мне было интересно, почему это не законно сделать позже? Но потом в программе не законно делать следующее.

test[5] = {10, 20, 30, 40, 50}; 

Или что-то подобное. Почему это? Я знаю, что это незаконно, и я не жалуюсь, но может ли кто-нибудь дать мне более техническое объяснение, почему я не могу этого сделать? (т.е. не говорите просто, что спецификация C не разрешает это или что-то в этом роде)

Я предполагаю, что он должен что-то делать со временем, когда память выделяется в стеке для массива, поэтому в этот момент C может автоматически заполнять мои значения, но тогда почему он не может сделать это позже?

Спасибо, ребята

18
задан No Name 5 March 2012 в 15:02
поделиться