const
всегда относится к слову справа от него, за исключением случаев, когда оно находится в конце строки, где оно относится к самому элементу (на языках более высокого уровня)
const char* str; //This is a pointer to read-only char data
//Read as to (const char)* str;
//Thus :
// *str = 'a';
//Is forbidden
char* const str; //This is a read-only pointer to a char data
//Read as char* (const str);
//Thus :
// str = &a;
//Is forbidden
const char* const str; //This is a read-only pointer to read-only char data
//Read as (const char)* (const str);
//Thus :
// str = &a
// and
// *str = 'a';
//Is forbidden
Вы должны всегда инициализировать эти указатели при их объявлении (кроме случаев, когда они являются параметром)
Ключевое слово
const
отлично подходит для гарантии того, что что-то не будет изменено, а также говорит разработчику, что не следует. Например, int strlen(const char* str)
говорит, что данные char
в вашей строке не будут изменены.