ポインタを固定化

ポインタを書き換えられないようにできないか考えてました。
値を書き換えられないようにする場合は、

const int a = 10;

とconstを使って定義すればよいので、ポインタの場合は

int a[3] = {1, 2, 3};
const int* p = a;

と書けばポインタの値が書き換えられないだろうと予想したのですが間違いでした。

int a[3] = {1, 2, 3};
const int* p = hoge;
p++;	//これはOK
*p = 4	//エラー

上のようにポインタが指している値は書き換えられないのですが、ポインタ自体は動かせます。
調べたところ、正解は次のとおりでした。

int a[3] = {1, 2, 3};
int *const p = a;
p++;	//エラー
*p = 4	//これはOK