Простой пример, что обозначает модификатор const при определении указателя.
void Foo( int * ptr,
int const * ptrToConst,
int * const constPtr,
int const * const constPtrToConst )
{
*ptr = 0; // OK: изменяются данные, на которые указывает указатель
ptr = NULL; // OK: изменяется указатель (т. е. изменяется адрес, содержащийся в указателе)
*ptrToConst = 0; // Ошибка: невозможно изменить данные, на которые указывает указатель
ptrToConst = NULL; // OK: изменяется указатель (т. е. изменяется адрес, содержащийся в указателе)
*constPtr = 0; // OK: изменяются данные, на которые указывает указатель
constPtr = NULL; // Ошибка: невозможно изменить указатель (т. е. невозможно изменить адрес, содержащийся в указателе)
*constPtrToConst = 0; // Ошибка: невозможно изменить данные, на которые указывает указатель
constPtrToConst = NULL; // Ошибка: невозможно изменить указатель (т. е. невозможно изменить адрес, содержащийся в указателе)
}