我有这个代码:
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)
我没有编译器,但可能有以下工作:
std::cout << "Pointer address = " << (void*) hello << std::endl;
Run Code Online (Sandbox Code Playgroud)
原因:只使用hello会将其视为字符串(char数组),通过将其转换为void指针,它将显示为十六进制地址.