¿Cómo funcionan los operadores <y> con punteros?
Solo por diversión, tuve unstd::list
deconst char*
, cada elemento apunta a una cadena de texto terminada en nulo y ejecuta unstd::list::sort()
en eso. Como sucede, de alguna manera (sin juego de palabras) no clasificó las cadenas. Teniendo en cuenta que estaba trabajando en punteros, eso tiene sentido.
De acuerdo con ladocumentación destd::list::sort()
, (por defecto) usa eloperator <
entre los elementos a comparar.
Olvidándome de la lista por un momento, mi pregunta real es: ¿Cómo funcionan estos (>, <,> =, <=) operadores en punteros en C ++ y C? ¿Simplemente comparan las direcciones de memoria reales?
char* p1 = (char*) 0xDAB0BC47;
char* p2 = (char*) 0xBABEC475;
p.ej. en un sistema little endian de 32 bits,p1
> p2
porque0xDAB0BC47
> 0xBABEC475
?
Las pruebas parecen confirmar esto, pero pensé que sería bueno ponerlo en StackOverflow para referencia futura. C y C ++ ambos hacen algocosas raras a punteros, por lo que nunca se sabe realmente ...