C++ 将字符常量赋值给两个指针,输出的地址为什么不相同?如图

如图:
为什么输出的三个指针指向的地址都不相同,if语句判定的结果p1和p2是相等的,懂行的给说说哈,谢谢!

img

p1,p2的值都是abc的地址,所以相等,但是下面&p1是p1这个指针的地址,&p2是p2这个指针的地址,他们当然不一样

指针本身有地址,指针指向一个地址,你打印的是指针本身的地址,应该打印指针的值 *p

因为p1和p2指的是abc,你看看你if的条件是什么
“abc”本身就是一个地址,这里你在栈区定义了三个指针都是指向同一个地址

&p1是指针变量的地址

img

#include <iostream>
using namespace std;

int main()
{
    const char* p1 = "abc";
    const char* p2 = "abc";
    const char* p3 = "abc";

    cout << p1 << endl;
    cout << p2 << endl;
    cout << p3 << endl;
    cout << &p1 << endl;
    cout << &p2 << endl;
    cout << &p3 << endl;
    return 0;
}