Null ポインターのジレンマ: NULL 対 0
C コーディング実践のタペストリーの中で、 NULL ポインターの場合は NULL と 0 (ゼロ)。この議論の起源は、NULL が (void*)0 として定義されていた C の初期にあります。この制約により、割り当ては void ポインターに限定され、いくぶん非現実的になってしまいました。その結果、開発者は 0 を null ポインターとして使用する慣例を採用しました。
C の進化にもかかわらず、設定は維持されています。著者のように、プログラマの中には、null 値として直感的に使用できることと、真理値テスト (if (p && !q)) との互換性があるため、0 を好む人もいます。逆に、美学に基づいて NULL を主張する人もいます。
この現在進行中の疑問に対処するために、 C の作成者である Bjarne Stroustrup の視点を考えてみましょう。 Stroustrup の C スタイルとテクニック FAQ によると、 C では NULL は事実上 0 と同義であり、個人の好みの問題となっています。彼は、マクロを避けるために 0 を使用することを提案し、標準以前の NULL 定義が予期しない動作を引き起こす場合があることを強調しています。
C 11 では、null ポインター値を明示的に定義するために nullptr キーワードが導入されました。ただし、Stroustrup 氏は、ニュアンスにこだわるのではなく、コードの機能に焦点を当てることを推奨しています。
最終的に、NULL と 0 のどちらを選択するかは個人の好みの問題になります。どちらのアプローチにもそれぞれの長所があり、本質的にどちらが優れているというわけではありません。コーディング チームまたはプロジェクト内の一貫性を確保することは重要ですが、一方のオプションを他方のオプションよりも決定的に優先する客観的な理由はありません。
以上がC の NULL と 0 : Null ポインターにはどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。