c++中字符串字面值与指针的疑议

fanfan_gg 2018-06-15 09:40:37
1.字符串字面值相当于const char *point
2.两指针比较实际上是比较其存储的地址值

那么按道理可以推导出两字符串字面值比较实际上是比较两指针的地址,即
"abc" == "abc" 的结果应该为false
但是实际结果为true

那么猜想两种可能:
1. 以上的推测是错的
2. 编译器将所有相同的字符串字面值仅存储一份,即两个"abc"实际都指向一处内存地址

以上那个说法正确呢?

没有分真可怜
...全文
837 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
fanfan_gg 2018-06-15
  • 打赏
  • 举报
回复

	cout << ("111" == "111") << endl;
	cout << &"111" << endl;
	cout << &"111" << endl;
最后两个输出一致是否可证明第二种可能,这种证明方法是否正确
donjin9 2018-06-15
  • 打赏
  • 举报
回复
这样的字符串常量只存一份哦,编译器没那么傻要分两份。
冷风1023 2018-06-15
  • 打赏
  • 举报
回复
字面值是存储在常量存储区的,和const char *point是两码事,换句话说const跟非const存储上没区别,只不过是只读的,point是个变量。

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧