簡體   English   中英

如何比較兩個無效地址*

[英]How to compare address of two void *

我有兩個void * ,分別是void *avoid *b 假設a0x804ae0b0x804aec 我如何比較兩者? 我想檢查a地址是否低於b地址。

標准運算符也可以處理void *

if (a < b) ...

您可以直接進行比較。

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

像其他任何變量一樣。

if(a < b)

#include <stdint.h>

if ( (uintptr_t)a < (uintptr_t)b ) ...

請注意,在具有32位整數但具有64位指針的系統上,向int類型轉換可能是不夠的。

每個地址最終都是一個數字,一個很長的地址,但是一個數字,因此通過將類型轉換為int(在64位系統上)或int64,您可以比較2個值

if((int64)a < (int64)b)
{
.....
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM