if (pointer) は if (pointer != NULL) と同等ですか?
C プログラミングでは、ポインタが有効なメモリ位置を指していることを確認するために、ポインタは NULL ではありません。従来、これは if (pointer != NULL) 条件で実現されていました。ただし、代替構文の可能性があります: if (pointer).
Is it Safe to Use if (pointer)?
Yes、if (pointer) is a valid構文は if (pointer != NULL) と同等です。その理由は C の暗黙的な変換ルールにあります。
暗黙的なブール変換
ブール変換に関する C 11 標準によると、
"A算術、スコープなし列挙型、ポインター、またはメンバー型へのポインターの prvalue は、bool 型の prvalue に変換できます。ゼロ値、null ポインター値、または null メンバー ポインター値は false に変換され、その他の値は true に変換されます。 "
言い換えると、ポインター値がブール値コンテキストで使用される場合、コンパイラーはそれを暗黙的にブール値に強制します。 null ポインターは false として扱われますが、他のすべてのポインター値は true として扱われます。
実際の例
次のコードを考えてみましょう:
<code class="cpp">int* p = nullptr; if (p) { // Do something } else { // Do something else }</code>
この例では、null ポインター p が暗黙的に false に変換されるため、if (p) 条件は有効です。 p が有効なメモリ位置を指している場合、条件は true と評価されます。
結論
if ( の代わりに if (ポインター) を使用するのは技術的には正しいですが、ポインタ != NULL)、後者の方がより明示的であり、明確さと読みやすさを目的として推奨されます。
以上が「if (ポインタ)」は C の「if (ポインタ != NULL)」と同じですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。