- ベストアンサー
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で初期化するには どのようにすれば良いのでしょうか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>確保した領域のサイズ分NULL(0?)をセットしたいと思ってます。 以下でいける模様: str[1] = new char[5] (); ex) http://www.ideone.com/PAXnH
その他の回答 (2)
- kmee
- ベストアンサー率55% (1857/3366)
よく間違われることがあります。 ポインタが何も指していないことを表わすヌルポインタNULLと、文字列の終端として使われるヌル文字'\0'は別物です。 略称はどちらもヌルなのですが、文脈からどちらか明確な場合はともかく、今回のようにポインタとも文字とも取れる場合だと、どちらの意味か明記してください。 > str[0]~str[2]をNULLで初期化する だと ポインタstr[0] を NULLにする → str[0]=NULL ; になりますよ。
お礼
ご回答ありがとうございます。 返事が遅れてしまいすみません。
補足
確保した領域のサイズ分NULL(0?)をセットしたいと思ってます。 memset(str[0], 0x00, sizeof(str[0]));としても、char型のポインタのサイズしか初期化されないらしく、他の方法を教えていただきたいです。
- osamuy
- ベストアンサー率42% (1231/2878)
> NULLで初期化 str[0] = NULL; ――っていうのしか思い浮かばないような。 空文字列化(*str[0] = '\0')とか配列の解放(delete[] str[0])とかの話でなければですが。
お礼
ご回答ありがとうございます。 返事が遅れてしまいすみません。
補足
確保した領域のサイズ分NULL(0?)をセットしたいと思ってます。 memset(str[0], 0x00, sizeof(str[0]));としても、char型のポインタのサイズしか初期化されないらしく、他の方法を教えていただきたいです。
お礼
なるほど!! ありがとうございます!!