首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这两个地址分别是什么?该如何处理

2012-02-23 
这两个地址分别是什么? stringrobin( Christopherrobin )constchar*pcrobin.c_str()//习题要求打印pc

这两个地址分别是什么?

string   robin( "Christopher   robin ");
const   char   *pc=robin.c_str();
//习题要求打印pc的地址,答案用的是第二种,而我觉得是第一种。
cout < <&pc < <endl;
cout < <static_cast <void*> (const_cast <char*> (pc)) < <endl;

看了C++   Primer相关章节,感觉还不是很明白,第一种不就是取的pc本身的地址吗?哪位高人解释一下啊?

[解决办法]
我觉得都对。
原因是,“&p”的类型是const char** p,而标准库中的operator < <没有特别的针对const char**的重载或特化。所以,最终的结果必然是通过标准转换,调用到basic_ostream::operator < <(const void* p);

热点排行