Q: What's the difference between const char *p, char const *p, and char * const p?
A: The first two are interchangeable; they declare a pointer to a constant character (you can't change any pointed-to characters). char * const p declares a constant pointer to a (variable) character (i.e. you can't change the pointer).
Read these declarations ``inside out'' to understand them; see question 1.21.
ISO Sec. 220.127.116.11
Rationale Sec. 18.104.22.168
H&S Sec. 4.4.4 p. 81