读书人

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

发布时间: 2012-02-23 22:01:35 作者: rapoo

这两个地址分别是什么?

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);

读书人网 >C++

热点推荐