我一直在做一个项目,我花了最后一个小时试图在我的代码中找到错误。仔细检查后,我注意到一些相当奇怪的问题,这一直是问题所在。
我的数组的初始元素的地址奇怪地比较等于memcmp()
。我已经分离了我的代码并尝试了一个测试代码,我得到了类似的结果。有人可以解释这种奇怪的行为吗?
#include <stdio.h>
#include <string.h>
int main(void)
{
char buf[256];
char *p1 = buf;
char *p2 = buf + 3;
if (memcmp(p1, p2, sizeof(char *)) == 0) {
puts("equal...");
}
p1 = buf + 100;
p2 = p1 + 3;
if (memcmp(p1, p2, sizeof(char *)) == 0) {
puts("equal...");
}
return 0;
}