如图:
为什么输出的三个指针指向的地址都不相同,if语句判定的结果p1和p2是相等的,懂行的给说说哈,谢谢!
p1,p2的值都是abc的地址,所以相等,但是下面&p1是p1这个指针的地址,&p2是p2这个指针的地址,他们当然不一样
指针本身有地址,指针指向一个地址,你打印的是指针本身的地址,应该打印指针的值 *p
因为p1和p2指的是abc,你看看你if的条件是什么
“abc”本身就是一个地址,这里你在栈区定义了三个指针都是指向同一个地址
&p1是指针变量的地址
#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;
}