[英]How to compare address of two void *
我有兩個void *
,分別是void *a
和void *b
。 假設a
在0x804ae0
, b
在0x804aec
。 我如何比較兩者? 我想檢查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.