The const Keyword
When applied to a pointer, the const keyword either indicates that the pointer itself is constant, or that the value it references is constant, depending on the placement:
int i = 7; const int * p = &i; // pointer to a constant int * const q = &i; // constant pointer *p = 8; // not allowed, p points to a const *q = 8; // allowed, q is pointing to non const p = q; // allowed, p itself is not constant q = p; // not allowed q is constant const int * const r = & i; // both aspects are constant