ポインタ変数は、ポインタの値そのものをconstにしたい場合と、ポインタの指し示す値をconstにしたい場合との、2つの場合があります。よって、constなポインタの宣言は、次のように、2種類が可能です、と。
const int *a; //ポインタの指し示す値をconstにしたい場合 int* const a;//ポインタ値そのものをconstにしたい場合
これ、つい逆に覚えちゃうんですよね。気をつけましょう。
int arr[]={1,1,1}; const int* p; int* const q=arr; // ポインタ値そのものがconstだから初期化時に値を設定 p = arr; *p = 2; // エラー!内容の変更は出来ない! q = arr; // エラー!ポインタ値そのものの変更はできない! *q = 2;