ホームページ >バックエンド開発 >C++ >C でポインターを比較して等しいかどうかを確認するにはどうすればよいですか?

C でポインターを比較して等しいかどうかを確認するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-19 19:40:03309ブラウズ

How Do I Compare Pointers for Equality in C  ?

ポインター間のオブジェクトの同等性の決定

C では、等価演算子 (==) を使用した 2 つのポインターの比較は、それぞれのオブジェクトに依存します。 .

オブジェクトへのポインタ

同じ型のオブジェクトを指すポインタ (a および b) の場合、等価演算 (a == b) は true を返します。次の場合:

  • 両方のポインタが null
  • 両方のポインタがメモリ内の同じオブジェクトを指します
  • 両方のポインタが同じアドレスを表します

関数へのポインタ

ポインタが同じ型の関数を指している場合、それらが同じ関数を指している場合にも比較は true を返します。

配列要素へのポインター

ポインターが配列内の要素を指す場合、それらが同じ要素を参照しているか、同じ配列の最後の要素の 1 つ先である場合、比較は true を返します。

未指定の比較

特定のシナリオでは、ポインターの等価演算子の動作は未指定です。これには以下が含まれます。

  • さまざまなアクセス レベルのオブジェクト メンバーへのポインターの比較
  • 共用体オブジェクトの非静的データ メンバーへのポインターの比較
  • へのポインターの比較さまざまな関数の非ローカル変数

標準ライブラリの拡張

C 標準ライブラリは std::less<> を提供します。このテンプレートは、組み込み演算子によって定義された比較動作に関係なく、任意のポインター型に対してグローバルな順序付けを提供します。これにより、void ポインターの一貫した比較が可能になります。

以上がC でポインターを比較して等しいかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。