为什么c_str()返回const指针值时不输出地址

时间:2019-08-01 03:45:19

标签: c++

我正在研究指针,并对c_str()函数感到困惑。

描述说它返回一个以Null结尾的常量指针,该指针指向字符数组,当我尝试打印该变量时,它不打印其地址。

int main() {
    string a = "hello";
    const char* b = a.c_str();
    cout << b << endl; //hello
}

我希望输出是b的地址,但它会显示“ hello”。

有人可以解释为什么吗?

1 个答案:

答案 0 :(得分:7)

std::ostreamconst char*有一个overload of operator<<,它将打印字符串而不是指针值(地址)。

您可以强制转换为const void*来调用打印地址的重载。

cout << static_cast<const void*>(b);