为什么此代码不显示任何输出:相反,如果我们使用
cout << &s1.f
或
cout << &s1.i
给出正确的输出。
# include <iostream>
using namespace std;
struct s
{
char c;
int i;
float f;
}s1;
int main()
{
cout << &s1.c;
}
答案 0 :(得分:5)
operator<<
的重载需要char*
并将其显示为以空字符结尾的字符串。如果要显示指针地址,请将指针强制转换为void*
。
答案 1 :(得分:2)
使用c
的地址使类型成为char*
,它将被解释为以空字符结尾的字符串。默认情况下,全局变量初始化为零,意味着c
将被解释为空字符串,因此不会打印任何内容。