const char * и char const * - это одно и то же?

Насколько я понимаю, модификаторы const должны быть читать справа налево. Из этого я понял, что:

const char*

- это указатель, элементы char которого нельзя изменить, но сам указатель может, а

char const*

- постоянный указатель на изменяемые символы.

Но я получаю следующие ошибки для следующего кода:

const char* x = new char[20];
x = new char[30];   //this works, as expected
x[0] = 'a';         //gives an error as expected

char const* y = new char[20];
y = new char[20];   //this works, although the pointer should be const (right?)
y[0] = 'a';         //this doesn't although I expect it to work

Итак ... какая именно? Я неправильно понимаю или мой компилятор (VS 2005)?

79
задан Puppy 26 May 2012 в 10:15
поделиться