|
こんばんは。
>この中で構造体の初期化をするためにNULL,\0,0x00を使ってますが、
>この使い方は正しいですか?
>typedef struct{
> int aaa;
> char strBuf[128];
>}DataBuf;
>
>void main( )
>{
> DataBuf dbuf;
>
> memset( &dbuf, '\0', sizeof( dbuf ) );
> memset( &dbuf, 0x00, sizeof( dbuf ) );
> memset( &dbuf, NULL, sizeof( dbuf ) );
>}
'\0'と0x00とNULLは大概の処理系で値としては0ですが、使い方が全く異なります。
'\0'は文字列の終了コードです。メモリ上には不定値が詰まっています
ので、文字列の終了をこのコードで知ることができます。
0x00はそのまま値0で、特別な意味はありません。
NULLは一般的なCの処理系では
#define NULL (void *)0
と定義されており、無効なポインタの意味を持ちます。
ですから、上記のようにmemsetで値0を設定するのなら、0x00が適当
ということになります。
ただ、上記の場合、単にstrBuf[128]の先頭に'\0'を代入し、
空文字列にするのみでよければ、
DataBuf dbuf = {0,""};
の方が関数によるオーバヘッドがないのでいいような気もしますが。
|