如何比较指针值和常量内存地址?
#define ADR 0x2000
unsigned int * po;
if(po<ADR) { };
上面的代码有效,但它给出了一个警告“指针和整数之间的比较”
最佳答案
问题是你实际上是这样做的:
unsigned int * p;
if(p<0x2000) {};
其中 0x2000
是一个整数。您可以使用强制转换来解决此问题:
#define ADR 0x2000
unsigned int * p;
if(p<(unsigned int*)ADR) {};
尽管更好的选择可能是像这样将类型转换实际添加到#define 中:
#define ADR ((unsigned int*) 0x2000)
正如@Alter Mann(隐晦地)指出的那样,从技术上讲,您实际上应该将指针转换为整数。参见 this answer了解详情。
关于将 "int* pointer"与常量内存地址进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29037386/