почему «char *» может указывать на «const char *»?

следующий код может быть правильно скомпилирован как на VC, так и на gcc:

char *str = "I am a const!";
str[2] = 'n';

однако, очевидно, есть ошибка времени выполнения. Поскольку "Я констант!" является const char *, почему компилятор не выдает ошибку или даже предупреждение ??


Кроме того, если я определю char a [] = "Я const!" , все элементы в a могут быть изменены, почему на этот раз строковые литералы становятся неконстантными ?

7
задан Flybywind 3 October 2011 в 00:19
поделиться