例えば、Cで文字列リテラルを指すポインタを定義しようとするとどうなりますか?
char * first = "Hello World!";
私の質問は、
では、メモリに格納された文字列リテラルですか?そうでない場合には、
first
に保存されたランダムなポインタ値のいくつかの種類がある(私はポインタ
first
は文字列リテラル「Hello World
」のinital要素のアドレスであると思い、それがされている場合)?
例えば、Cで文字列リテラルを指すポインタを定義しようとするとどうなりますか?
char * first = "Hello World!";
私の質問は、
では、メモリに格納された文字列リテラルですか?そうでない場合には、first
に保存されたランダムなポインタ値のいくつかの種類がある
(私はポインタfirst
は文字列リテラル「Hello World
」のinital要素のアドレスであると思い、それがされている場合)?
はい、文字列リテラルはメモリに格納されます。 CとC++の標準では、文字列リテラルには静的な記憶期間があり、変更しようとすると未定義の動作が起こり、同じ内容の複数の文字列リテラルが同じストレージを共有する場合と共有しない場合があります。
はい文字列リテラルは、通常はそれがに.rodataセクションで
を格納していますそれはあなたのプラットフォームに依存し、実装定義で、メモリに格納されます。一般に、(ご使用のシステムで利用可能な場合)はの読み取り専用メモリに移動します。続きを読むhere。
1.はい。最初の答えが「はい」なので、Moot。 –
'ポインタを保存する 'とはどういう意味ですか? –
@RawN「定義する」という言葉がより適していると思います! – Jin