There is a difference between const pointer and const value:
int * px; // pointer to an int
int * const px2; // constant pointer to an int
int const * px3; // pointer to a constant int
int const * const px4; // constant pointer to a constant int.
Your pointer can only point to the same type, or at least to a type with less restrictions.
int x = 1;
int const y = 2;
int const * px = &x; // fine, as const is more restrictive
int * py = &y; // Wrong -> you'd lose the const
So, if you have a const int, your pointer has to be a const int as well. Wether or not the pointer is constant is a different story