C++コードを調べるときに、開発者がchar**
変数に新しいセルを追加しようとしている行が出てきました。そうしている間、新しいセルにメモリを割り当てるために使用しているコード行は次のとおりです。 plantValue
はchar**
とplantCount
あるC++でchar *にメモリを割り当てる
*(plantValue + (plantCount-1)) = (char *) malloc(sizeof(char) * SAPPlantStr.length());
は整数です。
誰かが私にそれを理解することができないので上記のコード行を説明してもらえますか?
ありがとうございます。
+----------+
plantValue --> | char * | --> String #1
(char **) +----------+
| char * | --> String #2
+----------+
| ... |
+----------+
| char * | --> String #N
+----------+
ので、そのコードは基本的にmalloc()
を使用して、新しいCスタイルの文字列を割り当てている。
の長さと、割り当てられたメモリへのポインタが含まれ、式 '*(P + I)は'に等しいです'p [i]'。具体的には、 '(plantValue +(plantCount-1))'が 'plantValue [plantCount-1]'に等しいことを意味します。うまくいけば、それはあなたのためにそれを明確にする必要があります。 –
また、C++を学ぶためにそれを使用すると、おそらくそのコードを放棄するべきです。 "適切な" C++は、文字列に['std :: string'](http://en.cppreference.com/w/cpp/string/basic_string)を使用し、文字列には' 'std :: vector''(http: //en.cppreference.com/w/cpp/container/vector)を動的 "配列"に変換します。 –
ああ、おそらく、あなたが表示するコードにバグがあります。割り当てに '' \ 0 ''文字の終わりのためのスペースが含まれていないからです。 –