【问题标题】:Why pointer returns value, not adress? [duplicate]为什么指针返回值,而不是地址? [复制]
【发布时间】:2015-03-11 10:32:19
【问题描述】:

为什么在我的代码中我看到 value,它存储在地址中,而不是 adress?

char *fortunes[] =
    {
        "1",
        "2",
        "3",
        "4"
    };

    cout << *fortunes[2];   // result 3
    cout << fortunes[2];    // result 3, but I expected to see adress

【问题讨论】:

  • 做 cout
  • 为什么会看到地址? - cout &lt;&lt; "3";
  • @KarolyHorvath:它是一个指针,所以一个地址并不是一个不合理的期望。
  • @BenjaminLindley:嗯,它也是一个 C 字符串。
  • @KarolyHorvath 是的,并且 OP 不知道过载。因此问题。

标签: c++ pointers


【解决方案1】:

std::ostream&amp; operator&lt;&lt; 有一个重载,它接受 const char* 并将其解释为以 null 结尾的字符串,打印出字符直到找到 null 终止符。如果要打印指针的值(它保存的地址),可以将其强制转换为void*。

例如

cout << reinterpret_cast<const void*>(fortunes[2]) << endl;

【讨论】:

  • 或者说得更清楚些,因为我们一直在使用这个重载:cout &lt;&lt; "3"; - 你不会期望打印地址吧?
猜你喜欢
  • 1970-01-01
  • 2020-09-09
  • 1970-01-01
  • 2016-03-13
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多