这里只是一个测试原型:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int a=10;
char b='H';
string c="Hamza";
cout<<"The value of a is : "<<a<<endl;
cout<<"The value of b is : "<<b<<endl;
cout<<"The value of c is : "<<c<<endl<<endl;
cout<<"address of a : "<<&a<<endl;
cout<<"address of b : "<<&b<<endl;
cout<<"address of c : "<<&c<<endl;
return 0;
}为什么变量'b‘的地址是字符类型的而不是打印的?
发布于 2014-05-06 12:15:18
代码中的<<运算符在C++ 11中重载,它不与任何其他类型(如int或string )冲突,但它使用指向char的指针,如果使用该指针可能会产生不希望的结果。
你可以这样做:-
cout << static_cast<void*>(&b)发布于 2013-11-17 16:06:06
<<有一个重载,它接受指向char的指针,并将其解释为终止的C样式字符串。使用这个作为任何其他char的地址将是可怕的错误。
相反,转换为一个没有类型的指针,这样<<就不会变得太聪明了:
cout << static_cast<void*>(&b)发布于 2013-11-17 16:08:58
表达式&b具有char *类型。当运算符<<使用char *类型的对象时,它将其视为字符串,并将其输出为字符串。若要输出应写入的地址,请执行以下操作
( void * ) &b或
reinterpret_cast<void *>( &b )https://stackoverflow.com/questions/20032866
复制相似问题