Следующее объявление в C:
int* a, b;
объявит a
как тип int*
и b
как тип int
. Я хорошо знаю эту ловушку, но я хочу знать, почему она работает именно так. Почему он также не объявляет b
как int*
, как это ожидало бы большинство людей? Другими словами, почему *
применяется к имени переменной, а не к типу?
Конечно, вы могли бы написать это так, чтобы быть более совместимым с тем, как это работает:
int *a, b;
Тем не менее, я и все, с кем я говорил, с точки зрения типа "указатель на int", а не a, являются указателем на некоторые данные, а тип данных - "int".
Было ли это просто плохое решение дизайнеров C, или есть какая-то веская причина, почему он разбирается таким образом? Я уверен, что на этот вопрос был дан ответ, но я не могу найти его, используя поиск.