2016-08-29 6 views
0

例えば、Cで文字列リテラルを指すポインタを定義しようとするとどうなりますか?

char * first = "Hello World!"; 

私の質問は、

  1. では、メモリに格納された文字列リテラルですか?そうでない場合には、firstに保存されたランダムなポインタ値のいくつかの種類がある

  2. (私はポインタfirstは文字列リテラル「Hello World」のinital要素のアドレスであると思い、それがされている場合)?

+3

1.はい。最初の答えが「はい」なので、Moot。 –

+0

'ポインタを保存する 'とはどういう意味ですか? –

+0

@RawN「定義する」という言葉がより適していると思います! – Jin

答えて

2

はい、文字列リテラルはメモリに格納されます。 CとC++の標準では、文字列リテラルには静的な記憶期間があり、変更しようとすると未定義の動作が起こり、同じ内容の複数の文字列リテラルが同じストレージを共有する場合と共有しない場合があります。

3

はい文字列リテラルは、通常はそれがに.rodataセクションで

1

を格納していますそれはあなたのプラットフォームに依存し、実装定義で、メモリに格納されます。一般に、(ご使用のシステムで利用可能な場合)はの読み取り専用メモリに移動します。続きを読むhere

関連する問題