我有两个void *
,即void *a
和void *b
。可以说a
位于0x804ae0
而b
位于0x804aec
。我该如何比较两者?我想检查a
的地址是否低于b
的地址。
答案 0 :(得分:11)
标准运算符也适用于void *
:
if (a < b) ...
答案 1 :(得分:1)
您可以直接比较。
int main(void)
{
int a[]={10,20};
void *p1=&a[0],*p2=&a[1];
if(p1>p2)
printf("Crazy\n");
else
printf("Correct\n");
return 0;
}
预期产出:
Correct
答案 2 :(得分:0)
像任何其他变量一样。
if(a < b)
答案 3 :(得分:-1)
Set<String> set = new HashSet<String>();
set.add("one");
set.add("two");
Set<Set<String>> setOfSets = new HashSet<Set<String>>();
setOfSets.add(set);
boolean found = setOfSets.contains(set); // returns true
set.add("three");
Set<Set<String>> newSetOfSets = new HashSet<Set<String>>(setOfSets);
found = setOfSets.contains(set); // returns false
found = newSetOfSets.contains(set); // returns true
请注意,对于具有32位整数但是64位指针的系统,#include <stdint.h>
if ( (uintptr_t)a < (uintptr_t)b ) ...
的类型转换可能不够。
答案 4 :(得分:-3)
每个地址最终都是一个数字,一个非常长的数字,但是一个数字,所以通过执行转换为int(在64位系统上)或int64,你可以比较2个值
{{1}}