不同来源的指针可以相等,但前提是它们指向的是同一个内存地址。以下是一个示例代码:
#include
int main() {
int a = 5;
int* p1 = &a; // 指针p1指向变量a的内存地址
int* p2 = p1; // 指针p2指向与p1相同的内存地址
std::cout << "p1: " << p1 << std::endl; // 输出p1的内存地址
std::cout << "p2: " << p2 << std::endl; // 输出p2的内存地址
if (p1 == p2) {
std::cout << "p1 and p2 are equal." << std::endl;
} else {
std::cout << "p1 and p2 are not equal." << std::endl;
}
return 0;
}
输出结果为:
p1: 0x7ffeefbff4bc
p2: 0x7ffeefbff4bc
p1 and p2 are equal.
在这个示例中,p1和p2都指向变量a的内存地址,因此它们是相等的。