我一直在尝试在消息框中显示指针地址,需要您的经验。这是有用的代码:
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显示指针的十六进制地址?
感谢您的帮助!
答案 0 :(得分: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>
。
答案 1 :(得分:1)
&amp; PMyVar的类型是int**
,Convert :: ToString()没有接受指针类型的重载。您必须将其强制转换为支持的类型。指针值可以是4或8个字节,因此最佳选择是UInt64:
String^ str = String::Format("{0:X8}", (UInt64)&PMyVar);
MessageBox:Show(str);
使用String :: Format()这样称为复合格式,“X”格式提供格式为十六进制。支持使用调试器而不是编写这种代码。