-1

可能重复:
为什么不显示字符数据的地址?

我正在尝试使用 & 运算符并被困在这个程序中:

#include<iostream>
using namespace std;

int main() {
    char i='a';
    cout<<&i;
    return 1;
}

我期待变量 i 的地址作为输出,但输出是变量 i本身的值。

任何人都可以解释刚刚发生的事情吗?提前谢谢。

4

1 回答 1

4

那是cout::operator<<因为const char*. 你需要一个明确的演员来打印地址:

cout<<static_cast<void*>(&i);

这将使用 as 参数调用重载void*,这是用于打印地址的参数。

另请注意,您的代码会遇到未定义的行为。那里只有一个字符,并且重载需要一个以空字符结尾的 C 字符串。

于 2012-12-09T15:23:25.833 回答