如何比较两个空的地址*

时间:2015-06-03 08:18:21

标签: c pointers

我有两个void *,即void *avoid *b。可以说a位于0x804ae0b位于0x804aec。我该如何比较两者?我想检查a的地址是否低于b的地址。

5 个答案:

答案 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}}