作业帮 > 综合 > 作业

根据书上讲,两个字符串的比较是地址的比较.下面运行结果理应为:"not equal",但是现在输出"equal",

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 05:42:37
根据书上讲,两个字符串的比较是地址的比较.下面运行结果理应为:"not equal",但是现在输出"equal",
#include
void main()
{
if("join"=="join")//两个字符串的比较是地址的比较.运行结果理应为:"not equal",so tell me y
cout
因为虽然你看到了两个"join",其实系统只分配了一个字符串常量"join"(为了节省空间),因此两个是一个地址.
再问: 额滴个神。我发两个问题救你一个人回答。 由于字符串的地址属性,两个同样字符组成的字符串的地址应该不相等才对啊?编译时,应该分给两字符串不同的地址才对啊?
再答: 问题在于"join"是常量,不是变量。多次使用同一数值的常量只会反复调用同一地址的数值。 这正是编译器所做的优化,否则就要耗费不必要的空间了。