我偶然发现以下代码行
cout << &"Blahh" << endl;
编译器没有给出错误,并且在控制台上显示地址。它正常工作没有任何问题。如果我用int替换“Blahh”,那么
cout << &10 << endl;
代码无法编译。简而言之:字符串文字可以工作,但不是整数文字。
cout << &"Blahh" << endl;
的工作原因和cout << &10 << endl;
不起作用的原因是什么?
答案 0 :(得分:4)
"Blahh"
等字符串文字的类型为const char[6]
,因此在地址空间中为其分配了内存。整数文字常量10
没有分配给它的特定内存位置,因此无法获取其地址(另外,假设您可以在程序中更改常量10
的值)。
答案 1 :(得分:3)
因为"Blahh"
在内存中有一个地址(它是一个l值)。 10
没有(这是一个r值)。