Мне интересно, может ли кто-нибудь объяснить мне следующее: Если я напишу
int i = 0;
float* pf = i;
Я получаю ошибку компиляции (gcc 4.2.1):
error: invalid conversion from ‘int’ to ‘float*’
Имеет смысл - это, очевидно, два совершенно разных типа. Но если вместо этого я пишу
const int i = 0;
float* pf = i;
Компилируется без ошибок. Почему «const» должен иметь значение в правой части задания? Не является ли частью идеи ключевое слово «const», чтобы можно было применять ограничения типа для постоянных значений?
Любое объяснение, которое я смог придумать, кажется фальшивым. И ни одно из моих объяснений также не объясняет тот факт, что
const int i = 1;
float* pf = i;
не компилируется. Кто-нибудь может предложить объяснение?