2009-08-29 5 views
4

Les pointeurs dans les opérateurs de comparaison de support C et C++ prennent-ils en charge les opérateurs de comparaison (>, <, etc.)?Comparaison de pointeurs

Je veux comparer les positions de tableau pour être précis.

+0

Dupe de http://stackoverflow.com/questions/1098966/universal-less-for-pointers-in-c-standard parmi d'autres –

Répondre

12

Dans un tableau contigu comparant les offsets de mémoire (pointeurs) est OK. Si votre tableau est implémenté sous la forme d'une liste chaînée (par exemple), les nœuds peuvent être entièrement en mémoire, de sorte que la comparaison de pointeurs est absurde.

+0

merci pour votre réponse. – fsdemir

+7

Notez que le comportement de la comparaison des pointeurs qui ne pointent pas sur le même tableau est indéfini. – avakar

+3

Notez qu'en C++, l'opérateur() de std :: less , std :: less_equal , std :: greater et std :: greater_equal sont capables de comparer des pointeurs à différents objets de manière significative. – AProgrammer

2

Oui, ils peuvent être comparés. Par exemple, voir «Opérateurs relationnels» dans les normes pour plus d'informations, 6.5.8 dans C99 et 5.9 dans l'ancien brouillon de C++ (2006-11).

+2

Avec le caviat que les pointeurs doivent pointer vers le même morceau contigu de la mémoire qui était alloués en une seule allocation. Deux pointeurs aléatoires ne peuvent pas être comparés. –