ポインタについては、“const”の指定場所により、異なる解釈がされます。
【記述例1】
const char *p;
ポインタが示すオブジェクト(*p)を書き換えできないことを示します。
ポインタ自体(p)は書き換え可能です。
したがって、以下のようになり、ポインタ自体はRAM(Bセクション)に配置されます。
*p = 0;/* エラー */
p = 0;/* 正しい */
【記述例2】
char *const p;
ポインタ自体(p)を書き換えできないことを示します。
ポインタが示すオブジェクト(*p)は書き換え可能です。
したがって、以下のようになり、ポインタ自体はROM(Cセクション)に配置されます。
*p = 0;/* 正しい */
p = 0;/* エラー */
【記述例3】
const char *const p;
ポインタ自体(p)、ポインタが示すオブジェクト(*p)を書き換えできないことを示します。
したがって、以下のようになり、ポインタ自体はROM(Cセクション)に配置されます。
*p = 0;/* エラー */
p = 0;/* エラー */