C での文字列リテラルから 'char*' への非推奨の変換
以下に示すように文字列の配列を宣言する場合:
<code class="cpp">char *colors[4] = {"red", "orange", "yellow", "blue"};</code>
コンパイラ警告「文字列リテラルから 'char*' への非推奨の変換です。」が表示される場合があります。
エラーについて
このエラーは次の原因で発生します。 「{}」で提供される文字列は文字列リテラルであり、プログラム コード自体の中で定義されているという事実。デフォルトでは、文字列リテラルは不変です。つまり、ポインターに書き込むなどして実行時にその内容を変更することはできません。
文字へのポインターを使用して配列を宣言すると、文字列リテラルに書き込もうとすると実行時エラーが発生しやすくなります。元の入力 (「赤」、「オレンジ」など)。これにより、元の文字列が誤って変更され、予期しない結果が生じる可能性があります。
非推奨の解決策
この問題を解決し、潜在的なランタイム エラーを回避するには、配列を宣言する必要があります。文字への const ポインタとして使用します。
<code class="cpp">const char *colors[4] = {"red", "orange", "yellow", "blue"};</code>
const キーワードを追加すると、文字列が不変であり、意図せず変更されないことが保証されます。
値の編集に関する考慮事項
実行時に文字列値を変更する必要があると予想される場合は、文字列リテラルを別の配列にコピーするか、strtok() などのメカニズムを使用して個々の文字を操作できます。
以上がC で文字列の配列を宣言すると、「文字列リテラルから \'char*\' への非推奨の変換」という警告が表示されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。