C++とreturn;
同じですか?return NULL;
いいえ。
return
戻り値を持たない関数、つまり の戻り値の型から「抜け出す」ために使用されますvoid
。
return NULL
は値を返します。値NULL
が含まれる関数の戻り値の型は、と互換性がある必要がありますNULL
。
C ++では、ポインターのコンテキストreturn NULL;
と同じであることを理解しています。return 0;
並べ替え。NULL
と同等ではないかもしれませんが0
、少なくとも何かに変換されます。
明らかに整数の場合、これは当てはまりません。NULL は加算、減算などができないためです。
ポインタへの加算と減算を問題なく実行できます。ただし、NULL
いずれにせよ整数型 (C++03 では 4.10/1 および 18.1/4) でなければならないため、意味がありません。またはNULL
に展開されるマクロである可能性が非常に高いです。0
0UL
NULL
ただし、最新のコンパイラの中には、実際に自分が書いたものである場合に少なくとも警告するものもあります。
また、ポインタに NULL の代わりに 0 を使用することを推奨する人もいます。これは、移植性が向上するためです。これが同等性が発生する別の例であるかどうか、私は興味があります。
いいえ、私はこのアドバイスに同意しません。どこから来たのかはわかりますが、NULL
の正確な定義は実装によって異なるため、 C++11 に切り替えたとき、および他に自己文書化されていない場合は、 を使用NULL
すると置き換えがはるかに簡単になります。nullptr