C/C でのポインターの NULL 検証
コードレビューの議論で、ある寄稿者が、C/C での明示的な NULL チェックの使用を主張しました。次の形式:
<code class="c">int * some_ptr; if (some_ptr == NULL) { ... }</code>
の代わりに暗黙的check:
<code class="c">int * some_ptr; if (some_ptr) { ... }</code>
これにより、どのアプローチが優先されるのか、またその理由について疑問が生じます。
明示的な NULL 比較
明示的な NULL 比較の方が詳細です。その意図を明示的に示し、ポインタが NULL であってはいけないことを明確に示しています。また、以下は無効であるため、誤った割り当てを防ぐこともできます:
<code class="c">if (some_ptr = NULL) { ... }</code>
暗黙的な NULL チェック
暗黙的な NULL チェックはより簡潔で、バグが発生する可能性が低くなります。割り当てエラーのため。これは、if ステートメント内のポインター変数がその真実性 (非 NULL または NULL) として暗黙的に評価されるという事実に依存しています。
推奨事項
一般に、次の理由から、暗黙的な NULL チェックを使用することをお勧めします。
Exception
ただし、明示的な NULL 比較の方が適切な場合もあります。次のような場合です。
以上がC/C における明示的な NULL チェックと暗黙的な NULL チェック: どちらのアプローチが優れていますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。