¿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 ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta