• ベストアンサー

new演算子で領域を確保した変数の初期化

ポインタの配列の各要素にnewで領域を与えたとき、 char *str[3]; str[0] = new char[10]; str[1] = new char[5]; str[2] = new char[10]; str[0]~str[2]をNULLで初期化するには どのようにすれば良いのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.3

>確保した領域のサイズ分NULL(0?)をセットしたいと思ってます。 以下でいける模様: str[1] = new char[5] (); ex) http://www.ideone.com/PAXnH

参考URL:
http://slashdot.jp/~Yoh2/journal/437353
noname#201551
質問者

お礼

なるほど!! ありがとうございます!!

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

よく間違われることがあります。 ポインタが何も指していないことを表わすヌルポインタNULLと、文字列の終端として使われるヌル文字'\0'は別物です。 略称はどちらもヌルなのですが、文脈からどちらか明確な場合はともかく、今回のようにポインタとも文字とも取れる場合だと、どちらの意味か明記してください。 > str[0]~str[2]をNULLで初期化する だと ポインタstr[0] を NULLにする → str[0]=NULL ; になりますよ。

noname#201551
質問者

お礼

ご回答ありがとうございます。 返事が遅れてしまいすみません。

noname#201551
質問者

補足

確保した領域のサイズ分NULL(0?)をセットしたいと思ってます。 memset(str[0], 0x00, sizeof(str[0]));としても、char型のポインタのサイズしか初期化されないらしく、他の方法を教えていただきたいです。

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

> NULLで初期化 str[0] = NULL; ――っていうのしか思い浮かばないような。 空文字列化(*str[0] = '\0')とか配列の解放(delete[] str[0])とかの話でなければですが。

noname#201551
質問者

お礼

ご回答ありがとうございます。 返事が遅れてしまいすみません。

noname#201551
質問者

補足

確保した領域のサイズ分NULL(0?)をセットしたいと思ってます。 memset(str[0], 0x00, sizeof(str[0]));としても、char型のポインタのサイズしか初期化されないらしく、他の方法を教えていただきたいです。