ホームページ > バックエンド開発 > C++ > C の NULL と 0 : どちらが優れた Null ポインタですか?

C の NULL と 0 : どちらが優れた Null ポインタですか?

Barbara Streisand
リリース: 2024-12-14 19:00:15
オリジナル
738 人が閲覧しました

NULL vs. 0 in C  : Which is the Better Null Pointer?

C のポインタ : NULL と 0

C プログラミングの歴史では、NULL を使用するか 0 を使用するかという議論が激化しています。 NULL ポインタの場合は (ゼロ)?プログラマの中には、0 を使用するという伝統を堅持する人もいますが、NULL を使用することを誓う人もいます。しかし、本当に優れているのはどちらのアプローチなのでしょうか?

元々、NULL は (void*)0 として定義されていたため、C では使用できませんでした。しかし、C 11 の登場により状況は変わりました。現在、NULL は明示的に 0 として定義されており、対応する数値と機能的に同一になります。

0 の支持者は、真理値をテストするためのより論理的な選択であると主張しています。提供されたコード スニペットが示すように、ゼロは if (p && !q) のような演算子を使用した論理比較に自然に適合します。一方、NULL を使用するには、NULL が 0 に等しいと仮定しない限り、NULL との明示的な比較が必要になります。これでは、NULL に名前を付ける目的が無効になります。

C の作成者である Bjarne Stroustrup 氏は、この問題について意見を述べています。 NULL と 0 の選択は主に美的観点によるものであると述べています。ただし、彼はマクロを避けることと、NULL に関連する潜在的な誤解を避けるため、0 を好みます。

最終的に、NULL と 0 のどちらを選択するかは個人の好みの問題です。どちらのアプローチにも利点があるため、コーディング スタイルに最も適した方法を選択してください。ただし、C 11 では特にこの目的のためにキーワード nullptr が導入されたため、明確さと一貫性のためにその使用を検討する価値があることは注目に値します。

以上がC の NULL と 0 : どちらが優れた Null ポインタですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート