C объявления были написаны таким образом, чтобы «использовать зеркала объявлений».Вот почему вы объявляете массивы следующим образом:
int a[10];
Если бы вместо этого у вас было правило, которое вы предлагаете, где оно всегда
type identifier, identifier, identifier, ... ;
... тогда массивы логически должны были быбыть объявленным так:
int[10] a;
, что хорошо, но не отражает, как вы используете a
.Обратите внимание, что это относится и к функциям - мы объявляем функции следующим образом:
void foo(int a, char *b);
, а не
void(int a, char* b) foo;
В общем, правило "объявления зеркал использования" означает, что у вас есть толькозапомнить один набор правил ассоциативности, которые применяются к обоим операторам, таким как *
, []
и ()
, когда вы используете значение, и соответствующие токены в объявлениях, таких как *
, []
и ()
.
После некоторых дальнейших размышлений, я думаю, также стоит указать, что написание " указатель на int " как "int*
" является лишь следствием "объявления зеркалиспользовать "в любом случае.Если вы собираетесь использовать другой стиль объявления, возможно, было бы более целесообразно обозначить « указатель на int » как «&int
», или что-то совершенно другое, например «@int
».