我正在研究指针,并对c_str()函数感到困惑。
描述说它返回一个以Null结尾的常量指针,该指针指向字符数组,当我尝试打印该变量时,它不打印其地址。
int main() {
string a = "hello";
const char* b = a.c_str();
cout << b << endl; //hello
}
我希望输出是b的地址,但它会显示“ hello”。
有人可以解释为什么吗?
答案 0 :(得分:7)
std::ostream
和const char*
有一个overload of operator<<
,它将打印字符串而不是指针值(地址)。
您可以强制转换为const void*
来调用打印地址的重载。
cout << static_cast<const void*>(b);