显示字符串的地址

时间:2012-02-21 12:12:04

标签: c++ pointers

我有这段代码:

char* hello = "Hello World";
std::cout << "Pointer value = " << hello << std::endl;
std::cout << "Pointer address = " << &hello << std::endl;

结果如下:

Pointer value = Hello World
Pointer address = 0012FF74

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

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

4 个答案:

答案 0 :(得分:30)

如果使用&hello,则会打印指针的地址,而不是字符串的地址。将指针投射到void*以使用operator<<的正确重载。

std::cout << "String address = " << static_cast<void*>(hello) << std::endl;

答案 1 :(得分:6)

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

std::cout << "Pointer address = " << (void*) hello << std::endl;

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

答案 2 :(得分:2)

左右:

std::cout << "Pointer address = " << &hello[0] << std::endl;

答案 3 :(得分:0)

这也有效:

std::cout << "Pointer address = " << (int *)hello << std::endl;