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

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

なお,.constセクションを.zconstセクションに割り当てるときは#pragma section zconst指定をしてください。.constセクションを.zconst23セクションに割り当てるときは#pragma section zconst23指定をしてください。

 

-

const char *p;

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

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

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

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

 

-

char *const p;

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

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

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

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

 

-

const char *const p;

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

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

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