アプリ版:「スタンプのみでお礼する」機能のリリースについて

ポインタの配列の各要素にnewで領域を与えたとき、

char *str[3];

str[0] = new char[10];
str[1] = new char[5];
str[2] = new char[10];

str[0]~str[2]をNULLで初期化するには
どのようにすれば良いのでしょうか?

よろしくお願いします。

A 回答 (3件)

>確保した領域のサイズ分NULL(0?)をセットしたいと思ってます。



以下でいける模様:

str[1] = new char[5] ();

ex) http://www.ideone.com/PAXnH

参考URL:http://slashdot.jp/~Yoh2/journal/437353
    • good
    • 0
この回答へのお礼

なるほど!!

ありがとうございます!!

お礼日時:2011/08/29 23:25

よく間違われることがあります。



ポインタが何も指していないことを表わすヌルポインタNULLと、文字列の終端として使われるヌル文字'\0'は別物です。

略称はどちらもヌルなのですが、文脈からどちらか明確な場合はともかく、今回のようにポインタとも文字とも取れる場合だと、どちらの意味か明記してください。

> str[0]~str[2]をNULLで初期化する

だと
ポインタstr[0] を NULLにする → str[0]=NULL ;
になりますよ。

この回答への補足

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

補足日時:2011/08/27 20:32
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/08/27 20:32

> NULLで初期化



str[0] = NULL;

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

この回答への補足

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

補足日時:2011/08/27 20:32
    • good
    • 0
この回答へのお礼

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

お礼日時:2011/08/27 20:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!