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

Barbara Streisand
リリース: 2024-11-19 19:40:03
オリジナル
257 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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