显示字符串的地址

Gre*_*009 20 c++ pointers

我有这个代码:

char* hello = "Hello World";
std::cout << "Pointer value = " << hello << std::endl;
std::cout << "Pointer address = " << &hello << std::endl;
Run Code Online (Sandbox Code Playgroud)

这是结果:

Pointer value = Hello World
Pointer address = 0012FF74
Run Code Online (Sandbox Code Playgroud)

当我使用OllyDbg调试我的程序时,我看到0x0012FF74的值是例如0x00412374.

有什么方法可以打印hello指向的实际地址吗?

小智 35

如果使用&hello它,则打印指针的地址,而不是字符串的地址.将指针强制转换void*为使用正确的重载operator<<.

std::cout << "String address = " << static_cast<void*>(hello) << std::endl;
Run Code Online (Sandbox Code Playgroud)

  • @user1203803,为什么需要将其转换为 void* ? (2认同)

Mic*_*ers 6

我没有编译器,但可能有以下工作:

std::cout << "Pointer address = " << (void*) hello << std::endl;
Run Code Online (Sandbox Code Playgroud)

原因:只使用hello会将其视为字符串(char数组),通过将其转换为void指针,它将显示为十六进制地址.