为什么我可以获取字符串文字的地址,而不是整数文字的地址?

时间:2012-02-02 17:00:44

标签: c++

我偶然发现以下代码行

cout << &"Blahh" << endl;

编译器没有给出错误,并且在控制台上显示地址。它正常工作没有任何问题。如果我用int替换“Blahh”,那么

cout << &10 << endl;

代码无法编译。简而言之:字符串文字可以工作,但不是整数文字。

cout << &"Blahh" << endl;的工作原因和cout << &10 << endl;不起作用的原因是什么?

2 个答案:

答案 0 :(得分:4)

"Blahh"等字符串文字的类型为const char[6],因此在地址空间中为其分配了内存。整数文字常量10没有分配给它的特定内存位置,因此无法获取其地址(另外,假设您可以在程序中更改常量10的值)。

答案 1 :(得分:3)

因为"Blahh"在内存中有一个地址(它是一个l值)。 10没有(这是一个r值)。

http://en.wikipedia.org/wiki/Value_%28computer_science%29