コンパイラは、文字列リテラルから文字配列への変換が非推奨であることを警告しています。これは、文字へのポインターの配列にリテラル文字列を割り当てる方法は時代遅れであり、推奨されないことを意味します。
問題の理解:
文字列リテラル ("red" など) " と "orange" は、実行時に変更できない定数です。これらのリテラルを文字の配列に割り当てると、コンパイラはそれらを暗黙的に文字配列に変換します。ただし、この変換はベスト プラクティスとはみなされなくなりました。
非推奨でない解決策:
警告を回避するには、配列を定数文字列へのポインターの配列として宣言します。 。これにより、文字列が誤って変更されないことが保証されます。
<code class="cpp">const char *colors[4] = {"red", "orange", "yellow", "blue"};</code>
char の前に const を使用することで、配列要素が指す文字列が定数であることを指定します。
追加注:
配列内の文字列を実行時に変更する必要がある場合は、リテラルを文字の非定数配列にコピーする必要があります。例:
<code class="cpp">char colors_copy[4][20]; strcpy(colors_copy[0], "red"); strcpy(colors_copy[1], "orange"); strcpy(colors_copy[2], "yellow"); strcpy(colors_copy[3], "blue");</code>
リテラルをコピーすると、元の定数に影響を与えることなく実行時に変更できる変更可能な文字列が作成されます。
以上が文字列リテラルを使用する場合の「配列の初期化で互換性のないデータ型」の問題を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。