文字列を格納するメモリを動的に割り当てて、char ***
(文字列の2次元配列または3次元文字配列)にする関数があります。ダイナミック2D配列内に文字列リテラルを格納するC
私は後で文字列リテラルとして格納する方が良いと考えていたので、配列をconst char ***
に変更しました。しかし、strcpy()
とfree()
を使用しているときにエラーが発生しています。
error: passing argument 1 of 'strcpy' discards 'const' qualifier from pointer target type
私はパラメータstrcpy()
とfree()
テイクがタイプchar *
とvoid *
であることを理解し、私もそれがconst char *
代わりのchar *
に文字列を格納することをお勧めであることを読んだことがあります。
strcpy()
またはfree()
のような操作で文字列リテラルを使用できない場合はどうすればよいですか? const char ***
の代わりにchar ***
としておく必要がありますか?私は理解していないここに何かが明らかです。
'char ***'型のオブジェクトも、それが指すオブジェクトも、文字列の2D配列または 'char'の3D配列ではなく、それら自体が互いに区別されません。より一般的には、配列とポインタは全く同じものではなく、多次元配列は配列の配列であり、ポインタの配列ではありません。 –