【问题标题】:Garbage value in pointer to char指向 char 的指针中的垃圾值
【发布时间】:2019-02-03 05:02:11
【问题描述】:

在代码中:

int main(){
int a = 10;
int * s =  &a;
cout << s;
}

“a”的内存地址按预期打印。但是,当我尝试时:

int main(){
char a = 10;
char * s =  &a;
cout << s;
}

输出是一个垃圾值。这可能是什么原因?

【问题讨论】:

  • 第一个片段调用operator&lt;&lt;(void*) 打印地址。第二个调用operator&lt;&lt;(const char*),它试图将参数解释为指向以 NUL 结尾的字符串的指针,并打印该字符串。如果你想要地址,请输入cout &lt;&lt; static_cast&lt;void*&gt;(s);
  • @IgorTandetnik - 继续写下去。清晰简洁的答案。

标签: c++ pointers char


【解决方案1】:

这是因为operator&lt;&lt; 具有处理字符指针的特殊功能,因为它们是旧版 C 中的字符串。所以它会假设您给它的任何 char * 都是指向旧版 C 字符串中第一个字符的指针,并打印就是这样。

如果你想专门把它当作一个指针,把它转换成一个指针类型没有特殊处理,像:

cout << static_cast<void *>(s);

【讨论】:

    猜你喜欢
    • 2016-01-26
    • 1970-01-01
    • 2018-04-05
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多