#include<iostream>
using namespace std;
int main()
{
int a;
char *x;
x = (char *) &a;
a = 2;
cout<<"a"<<x<<"p"<<*x<<"d\n";
x[0] = 1;
x[1] = 2;
cout<<a;
return 0;
}
输出
apd
513
这个问题是geeksforgeeks.org的修改形式。第二份印刷声明背后的原因对我来说很清楚。我无法理解为什么x的值和地址是空白的。 注意:第二个输出取决于机器。它在小端机器中的值是513
答案 0 :(得分:0)
operator<<
的{{1}}的{{1}}已超载ostream
。它认为指针接收到指向空终止的C字符串的指针并尝试打印字符串。如果要打印指针值,则需要将其转换为const char*
,例如:
void *
再次为cout << static_cast<void*>(x) << endl;
类型重载了operator<<
。它打印字符,而不是整数值。如果要查看下面的实际整数值,则需要将char转换为另一个整数类型:
char