標準への注釈の修正に基づいています。
3.14オブジェクトは、物理メモリアドレスに存在する変数または定数のいずれかです。
- Cでは、定数は(一部の文字列リテラルを除いて)メモリに存在しないため、オブジェクトではありません。
constには実際のメモリ位置がなく(文字列リテラルを除く)、コンパイラに依存していることは私には理にかなっています。コンパイラは、constへのすべての参照をリテラル値に置き換える可能性があります。そうは言っても、次のことはどのように可能ですか?
const int * foo;
これは、へのポインタを宣言しますconst int
。ただし、定数にはアドレスがないので、これは実際にはどういう意味ですか?コンパイル時にのみ存在するリテラル値へのポインターを持つことはできません。