为什么这个代码不显示任何输出:相反,如果我们用为什么没有输出显示
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;
}
为什么这个代码不显示任何输出:相反,如果我们用为什么没有输出显示
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;
}
有,需要一个char*
并将其显示为一个空终止字符串的operator<<
过载。如果要显示指针地址,请将指针指向void*
。
哦,太棒了!铸造无效*给出确切的答案。购买为什么cout <<&s1.i没有铸造给出正确的答案。 –
@DeveshAgrawal,'int *'没有特殊的重载,就像'char *'一样。 char *代表一个字符串,所以他们为它提供了一个重载操作符。一个'int *'没有特别的意义。 – chris
kool !!非常感谢!! –
以c
的地址使类型为char*
,这将被解释为空终止的字符串。全局变量默认初始化为零,意味着c
将被解释为空字符串,因此不会打印任何内容。
你还没有初始化任何东西。 – chris
为什么需要初始化? cout << &s1.i;会给出正确的输出。 –
@DeveshAgrawal,我的坏。我误解了这个问题,并没有意识到它首先会被初始化为0。看到答案。 – chris