A.1.3 const定数ポインタを定義する

ポインタについては,“const”の指定位置により,異なる解釈がされます。

-

const char *p;

ポインタが示すオブジェクト(*p)を書き換えできないことを示します。

ポインタ自体(p)は書き換え可能です。

したがって,以下のようになり,ポインタ自体はRAM(.dataなど)に配置されます。

*p = 0;     /*エラー*/
p = 0;      /*正しい*/

-

char *const p;

ポインタ自体(p)を書き換えできないことを示します。

ポインタが示すオブジェクト(*p)は書き換え可能です。

したがって,以下のようになり,ポインタ自体はROM(.const/.constf)に配置されます。

*p = 0;     /*正しい*/
p = 0;      /*エラー*/

-

const char *const p;

ポインタ自体(p),およびポインタが示すオブジェクト(*p)を書き換えできないことを示します。

したがって,以下のようになり,ポインタ自体はROM(.const/.constf)に配置されます。

*p = 0;     /*エラー*/
p = 0;      /*エラー*/