STR30-C. 文字列リテラルを変更しない 文字列リテラルとは、二重引用符で囲まれた0個以上のマルチバイト文字の並びである(たとえば "xyz")。ワイド文字列リテラルも同じであるが、接頭辞 'L' が頭に付く(たとえば、L"xyz")。 コンパイルの時、文字の並びと null 終端文字を格納するのに十分な長さを持つ静的記憶域期間の配列を作成するために、文字列リテラルが使用される(複数の文字列リテラルを定義している場合)。これらの配列がどの程度区別されるかは不定である。プログラムが文字列リテラルを変更しようとした場合の動作は未定義である。通常は、文字列リテラルは読み取り専用メモリに格納されるため、アクセス違反を引き起こすことが多い。C 標準 [ISO/IEC 9899:2011] 附属書 J 「未定義の動作」の 33 を参照すること。 ライブラリ関数 strpbrk()、strchr()