让我们考虑这段代码:
char arr[10];
char *ptr1 = &arr[0];
char *ptr2 = &arr[5];
或者
int i;
char *ptr1 = &i;
char *ptr2 = ptr1 + 1;
显然,这两个指针指向同一个对象。但是有没有办法在代码中确定这一点?是否可以编写这样的函数?
// Returns true if p1 and p2 points to the same object and false otherwise
bool same_object(void *p1, void *p2) {
if(<condition>)
return true;
return false;
}
我怀疑这是不可能的,因为您不能仅从指针中检索数组的大小,但我想确定是否有我可能忽略的东西。