2

我一直在尝试在消息框中显示指针地址,需要您的经验。这是一种有效的代码:

int MyVar;
int *PMyVar;
MyVar = 5;
PMyVar = &MyVar;
MessageBox::Show("value of MyVar: \n " + Convert::ToString(&PMyVar), "Pointer value");

运行程序显示:

value of MyVar:
True

我试图显示指针的地址,例如 0xfc00(只是猜测)而不是 True。如何使用 MessageBox 显示指针的十六进制地址?

谢谢你的帮助!

4

2 回答 2

1

&PMyVar 的类型是int**,Convert::ToString() 没有接受指针类型的重载。您必须将其转换为受支持的类型。指针值可以是 4 或 8 个字节,因此最好的选择是 UInt64:

  String^ str = String::Format("{0:X8}", (UInt64)&PMyVar);
  MessageBox:Show(str);

像这样使用 String::Format() 称为复合格式,“X”格式提供十六进制格式。赞成使用调试器而不是编写这种代码。

于 2013-09-21T17:41:57.343 回答
1

由于您使用的是 C++,请使用std::ostringstream

int MyVar = 5;
int *PMyVar = &MyVar;
std::ostringstream oss;
oss << "address of PMyVar: " << &PMyVar;
MessageBox::Show(oss.str().c_str(), "Pointer value");

并且不要忘记#include <sstream>

于 2013-09-21T17:35:49.063 回答