C のポインター: NULL と 0
C の初期段階では、NULL ポインターとしての NULL の使用は以下に制限されていました。ポインタを無効にするため、実用的ではありません。その結果、プログラマーは、NULL ポインターを表すために 0 (ゼロ) を使用する慣例を採用しました。
0 の名前付き表現として NULL が導入されたにもかかわらず、どちらを使用するかについての議論は続いています。プログラマーの中には、論理演算子 (例: if (p && !q) do_something()) を使用してポインタを真理値としてテストできることを挙げて、0 を主張する人もいます。彼らは、NULL を使用するには、NULL との明示的な比較、または NULL がゼロに等しいという仮定に依存する必要があると主張しています。
他の人たちは、NULL は 0 として定義されているため、単に見た目の違いにすぎないという Bjarne Stroustrup の見解を繰り返しながら、NULL を支持しています。 C で。 Stroustrup 氏は、NULL が誤って 0 や非整数とは区別されるものとして扱われる場合に混乱が生じる可能性も強調しています。
どちらのアプローチについても議論の余地はありますが、Stroustrup 氏は、細かい点について過度に心配しないよう強く主張しています。 RAII と例外の時代では、null ポインターが使用される頻度は減りましたが、時折必要になることは依然として残っています。
名前付き表現を好む人のために、C 11 では null ポインターの指定キーワードとして nullptr が導入されました。この推奨事項は、ヌル ポインターを他の整数値と区別し、混乱の可能性を排除するのに役立ちます。 2 つのアプローチの間に客観的な優位性はないため、最終的に、NULL と 0 または nullptr のどちらを選択するかは個人の好みになります。
以上がC ポインタ: NULL、0、または nullptr – どれを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。