乐闻世界logo
搜索文章和话题

如何检查两个指针是否指向同一个对象?

6 个月前提问
5 个月前修改
浏览次数44

1个答案

1

在 C++ 中,检查两个指针是否指向同一个对象相对直接。当我们想要确认两个指针是否指向相同的内存地址时,我们可以简单地使用相等运算符(==)来比较这两个指针。

示例代码:

cpp
#include <iostream> class Example { public: int value; Example(int v) : value(v) {} }; int main() { Example a(10); Example b(20); Example* ptr1 = &a; Example* ptr2 = &a; Example* ptr3 = &b; if (ptr1 == ptr2) { std::cout << "ptr1 和 ptr2 指向同一个对象。" << std::endl; } else { std::cout << "ptr1 和 ptr2 不指向同一个对象。" << std::endl; } if (ptr1 == ptr3) { std::cout << "ptr1 和 ptr3 指向同一个对象。" << std::endl; } else { std::cout << "ptr1 和 ptr3 不指向同一个对象。" << std::endl; } return 0; }

在这个例子中,ptr1ptr2 都指向了对象 a,因此它们的地址相同,比较结果为真。而 ptr3 指向了另一个对象 b,与 ptr1 的地址不同,因此比较结果为假。

这种方法是检查两个指针指向是否相同的最直接和常用方法。需要注意的是,这里比较的是指针的地址值,而不是指针所指向的对象的内容。如果需要比较对象内容是否相同,需要进行对象级别的比较,而不是单纯的指针比较。

2024年7月5日 10:39 回复

你的答案