我正在尝试使用&符号运算符并且遇到了这个程序:
#include<iostream>
using namespace std;
int main() {
char i='a';
cout<<&i;
return 1;
}
我期待变量i的地址作为输出,而输出则作为变量i 本身的值。
有人可以解释刚刚发生了什么吗?提前完成。
答案 0 :(得分:4)
那是因为cout::operator<<
有const char*
的重载。您需要使用显式强制转换来打印地址:
cout<<static_cast<void*>(&i);
这将使用void*
作为参数调用重载,该参数用于打印地址。
另请注意,您的代码会遇到未定义的行为。你只有一个char,并且重载需要一个以null结尾的C字符串。