Понимание того, где находится «const» в объявлении

Мне трудно найти интуитивно понятный шаблон того, как const используется в объявлениях в языках C и C ++. Вот несколько примеров:

const int a;    //Const integer
int const a;    //Const integer
const int * a;  //Pointer to constant integer
int * const a;  //Const pointer to an integer
int const * a const;    //Const pointer to a const integer

В строках 1 и 2 кажется, что const может стоять до или после int , что он и изменяет.

  1. Итак, как, в строке 4, решает ли компилятор, что const модифицирует * (указатель), а не int ?
  2. Какому правилу компилятор следует, чтобы решить, какой к чему применяется const ?
  3. Соответствует ли он тому же правилу для * ?
12
задан Adam S 6 July 2011 в 02:04
поделиться