Sdílet prostřednictvím


Porovnání ukazatelů pomocí relačních operátorů

Při porovnání dvou ukazatelů na objekty stejného typu, je výsledek určen umístěním objektů, na které je odkazováno v adresním prostoru programu.Ukazatele je také možné porovnat s konstantním výrazem, který je vyhodnocen na hodnotu 0 nebo na ukazatel typu void *.Pokud je provedeno porovnání ukazatele s ukazatelem typu void *, je druhý ukazatel implicitně převeden na typ void *.Poté je provedeno porovnání.

Dva ukazatele na různé typy nelze srovnávat, pokud:

  • je jeden typu třídy odvozené z jiného typu.

  • je alespoň jeden z ukazatelů explicitně převeden (přetypován) na typ void *. (Druhý ukazatel je při převodu implicitně převeden na typ void *.)

Je zaručeno, že dva odkazy stejného typu, které odkazují na stejný objekt, jsou stejné.Pokud jsou porovnány dva ukazatele na nestatické členy objektu, platí následující pravidla:

  • Pokud typ třídy není sjednocení a pokud nejsou dva členové odděleni specifikátorem přístupu, jako je public, protected nebo private, bude ukazatel na člena deklarovaného jako poslední při porovnání větší než ukazatel na člena deklarovaného dříve. (Další informace o specifikátorech přístupu naleznete v části Syntaxe tématu Specifikátory přístupu.)

  • Pokud jsou dva členy odděleny specifikátory přístupu, nejsou výsledky definovány.

  • Pokud je typ třídy sjednocení, ukazatelé na různé datové členy v tomto sjednocení budou porovnány jako stejné.

Pokud dva ukazatelé odkazují na prvky stejného pole nebo na prvek, který je za koncem tohoto pole, ukazatel na objekt s vyšším indexem bude při porovnání větší.Porovnání ukazatelů je zaručeno pouze v případě, že ukazatelé odkazují na objekty stejného pole nebo na umístění za koncem pole.

Viz také

Referenční dokumentace

Výrazy s binárními operátory