使用& char数据类型的运算符

时间:2012-12-09 15:21:29

标签: c++ visual-c++ addressof

  

可能重复:
  Why is address of char data not displayed?

我正在尝试使用&符号运算符并且遇到了这个程序:

#include<iostream>
using namespace std;

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

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

有人可以解释刚刚发生了什么吗?提前完成。

1 个答案:

答案 0 :(得分:4)

那是因为cout::operator<<const char*的重载。您需要使用显式强制转换来打印地址:

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

这将使用void*作为参数调用重载,该参数用于打印地址。

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