如何打印第一个字符的地址?

Des*_*tor 5 c++

为什么整个字符串显示为结果?为什么第一个字符的地址没有被打印?如何打印第一个字符的地址?请帮我.

#include <iostream>
int main()
{
    char x[6]="hello";
    std::cout<<&x[0];
}
Run Code Online (Sandbox Code Playgroud)

dev*_*bmw 8

<<操作上std::cout会对待char*作为空终止字符串.您需要将其强制转换void*为打印指针值.

试试这个:

#include <iostream>

int main()
{
    char x[6] = "hello";
    std::cout << static_cast<void*>(x);
}
Run Code Online (Sandbox Code Playgroud)

  • 最好将地址打印为`void*`而不是`int`.`cout <<(void*)x << endl;` (3认同)
  • @meet,`int`可能不足以容纳一个地址,这将导致截断.此外,地址更容易以十六进制读取而不是十进制. (2认同)
  • @Brett,将指针强制转换为`int`会导致截断或整数溢出.行为是实现定义的.见标准第4.7/3节. (2认同)