const キーワードの位置

前にこんなメモを書いてたのを見つけた。

下の2つは同じ。

 const type var = val;
 type const var = val;

下の2つも同じ。この場合は、var が指示する先 (*var) が const になる。

 const type * var = val;
 type const * var = val;

以下は、上の2つとは違う。

 type * const var = val;

この場合は、var 自体が const になる。なので、

 var = &other_var;

はエラーだけど、

 *var = new_val;

は、エラーじゃない。