【问题标题】:Why c_str() doesn't output an address when it returns a const pointer value [duplicate]为什么 c_str() 在返回 const 指针值时不输出地址 [重复]
【发布时间】:2019-08-01 03:45:19
【问题描述】:

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

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

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

我希望输出是 b 的地址,但它打印的是“hello”。

谁能解释一下原因?

【问题讨论】:

  • char* 是指针世界中的一个例外

标签: c++


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-07-10
    • 2021-04-01
    • 2013-11-14
    • 1970-01-01
    相关资源
    最近更新 更多