use*_*608 1 c++ winapi casting
我试图通过将一个int转换为const CHAR*来获取一个消息框来显示变量的地址,我目前的功能失调尝试看起来像这样:
#include <cstdlib>
#include <iostream>
#include <windows.h>
int main()
{
int *ip;
int pointervalue = 1337;
int thatvalue = 1;
ip = &pointervalue;
thatvalue = (int)ip;
std::cout<<thatvalue<<std::endl;
MessageBox (NULL, (const char*)thatvalue, NULL, NULL);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
dos框打印2293616,消息框打印"9 |"
如果您使用的是C++ 11,还可以使用to_string():
MessageBox (NULL, std::to_string(thatvalue).c_str(), NULL, NULL);
Run Code Online (Sandbox Code Playgroud)
您当前的问题是,你只是铸造thatvalue到const char*,或者换句话说,取int值,并将其转换为一个指针,而不是一个字符串(C-风格或其他).你的消息框中会出现垃圾邮件,因为const char*指针指向无效的垃圾内存,这是一个不幸的奇迹,它不会崩溃.