仅仅是为了好玩,我有一个指向以空字符结尾的文本字符串的std::list
,每个元素都是const char*
类型,并在其上运行std::list::sort()
。恰好,它(没有双关语)未对字符串进行排序。考虑到它正在处理指针,这是有道理的。
根据std::list::sort()
的文档,它(默认情况下)使用operator <
来比较元素。
暂且不谈列表,我的实际问题是:在C++和C中,这些(>、<、>=、<=)操作符如何作用于指针?它们只是简单地比较实际的内存地址吗?
char* p1 = (char*) 0xDAB0BC47;
char* p2 = (char*) 0xBABEC475;
例如,在32位小端系统上,
p1
> p2
是因为0xDAB0BC47
> 0xBABEC475
吗?测试似乎证实了这一点,但我认为将其放在StackOverflow上以供将来参考是个好主意。C和C ++都对指针做一些奇怪的事情,所以你永远不知道......
<algorithm>
中的所有排序算法和std::list::sort
默认使用operator<
(我刚刚查了一下;我本来以为它们会默认使用std::less
)。 - James McNellis