看到标题你可能笑了,这不是小case吗?
char *p = "This is a string!";
cout<<p<<endl;//搞定了?其实没有,这个输出结果就是字符串。至于为什么没搞定,这关系到cout的内部实现,由于鄙人才疏学浅,实在是没法展开讨论。
啊,这样不对?那加个(取地址符)&不就OK了!
cout<<&p<<endl;//这样输出的确实是个地址,但是是p的地址而不是p指向的地址,还不行!
心里郁闷了,这个小问题自己以前怎么没想到呢,现在还真解决不了。
仔细想一下,地址其实不就是数字吗,那我把它强转成long型的不就可以了吗!
cout<<(long)p<<endl;//这下总算是搞定了,先高兴一下
高兴得有点早了,这强转明显就是C语言的那一套。怎么办呢,其实C++里页提供了类型转化的关键字static_cast、const_cast、reinterpret_cast、dynamic_cast,具体请自己查阅资料。
cout<<reinterpret_cast<long>(p)<<endl;//这样是不是高大上一点呢?嘿嘿