2 eszrdxtfcygv eszrdxtfcygv 于 2014.10.23 14:34 提问

两个指针比较是否相等
c++

在一个函数内部,声明指针变量
char *p1 = "abc";
char *p2 = "abc";
cout<<(p1 == p2)<<endl;
输出结果是什么?求大神解释。谢谢

2个回答

eszrdxtfcygv
eszrdxtfcygv   2014.10.23 15:02

大神快出现?急着知道这道题的答案

xuexiacm
xuexiacm   2014.10.24 14:21

返回:1
解析:
p1, p2指向同一块内存储单元(常量"abc"),且,p1、p2的值都为这块存储区域的首地址。
所以p1 = p2;
借助调试查看变量:
p1 0x000edc9c "abc" char*
p2 0x000edc9c "abc" char*

输出cout << &("abc") << endl;--->000EDC9C
得知,都相等。

u011651799
u011651799 内存中有一个专门存放常量的地方,试想一下,如果有无数个相同的常量“abc”,是在内存常量区域内存放一个,还是每个都分配一块内存?当然是存放一个了,这样可以结省内存。
3 年多之前 回复
eszrdxtfcygv
eszrdxtfcygv 大神的回答我也去跟踪看地址了,但是我想不明白 为什么 字符串相同就放在同一个地址,难道不能两个静态变量放相等的值吗
3 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!