Porównanie wskaźników przy operatory relacyjne
Porównaniu dwa wskaźniki do obiektów tego samego typu, wynik jest określana według lokalizacji obiektów, wskazywanej w przestrzeni adresowej programu.Wskaźniki mogą być także porównywane wyrażenie stałe, którego wynikiem jest 0 lub wskaźnika typu void *.Jeśli wskaźnik wykonywane jest porównanie przeciwko wskaźnika typu void *, inne wskaźnik niejawnie konwertowane typu void *.Następnie dokonywane jest porównanie.
Nie można porównać dwa wskaźniki różnych typów, chyba że:
Jeden typ jest typu klasy pochodzące od innego typu.
Co najmniej jeden ze wskaźników jest jawnie konwertowany (cast) do typu void *.(Inne wskaźnik niejawnie konwertowane typu void * przy przeliczaniu.)
Dwa wskaźniki tego samego typu, które wskazują ten sam obiekt są gwarantowane do porównania równe.Jeśli dwa wskaźniki do niestatycznego członków obiektu są porównywane, mają zastosowanie następujące zasady:
Typ klasy nie jest Unii i dwóch członków nie są rozdzielone specyfikatora dostępu, takich jak publicznej chronionych lub prywatnych, wskaźnik do elementu członkowskiego zgłoszonych ostatnio będzie porównywać większa niż wskaźnik do elementu członkowskiego zgłoszonych wcześniej.(Aby uzyskać informacje o specyfikatora dostępu, zobacz sekcję składnia w Specyfikatory dostępu.)
Jeśli dwóch członków są oddzielone specyfikatora dostępu, wyniki są niezdefiniowane.
Jeśli typ klasy jest Unii, wskaźniki do członków różnych danych, w tym Unii porównać równe.
Dwa wskaźniki punktu do elementów tablicy w tej samej lub do jednego elementu poza koniec tablicy, wyższy porównuje wskaźnik do obiektu z wyższy indeks dolny.Porównanie wskaźników jest gwarantowane ważne tylko wtedy, gdy wskaźniki odnoszą się do obiektów w jednej macierzy, lub do jednej lokalizacji poza koniec tablicy.