C/C での NULL ポインタのチェック : メソッドの比較
コードレビューでは、NULL ポインタのチェックがよく話題になります。ある寄稿者は、NULL との明示的な比較を使用することを主張しています:
int * some_ptr; // ... if (some_ptr == NULL) { // Handle null-pointer error } else { // Proceed }
別の当事者は、if ステートメントでポインタ変数を使用して暗黙的に NULL をチェックすることも同様に明確であると信じています:
int * some_ptr; // ... if (some_ptr) { // Proceed } else { // Handle null-pointer error }
これいくつかの理由から、後者の方法が推奨されます。まず、ポインター変数を比較する代わりに NULL を代入するなどの論理エラーが発生するリスクを回避します。
if (some_ptr = NULL)
第 2 に、次のように機能する unique_ptr、shared_ptr、auto_ptr などの C クラスと互換性があります。ポインタですが、ブール値への変換を提供します。 NULL との明示的な比較にはポインタへの変換が必要ですが、これには副作用が生じるか、効率が低下する可能性があります。
NULL との明示的な比較は不必要に冗長であり、混乱を招く可能性があります。 C 言語では、ブール値コンテキストのゼロ以外の値は true、ゼロ値は false であると明示的に規定されています。 NULL の暗黙的チェックを使用することは明確かつ簡潔であり、冗長な具体性を持たずにコードの意図を表現します。
以上がC/C で NULL ポインターを明示的にチェックする必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。