我想在MessageBox中显示一个函数的内存地址,但是它并不像我想要的那样显示。
我想把回调函数的函数地址传递给另一个函数,所以我尝试获取它的地址。
我看了this 的例子,并试图先在MessageBox中显示它而不是打印到控制台上,然后再使用它。
我的尝试:
char ** fun()
{
static char * z = (char*)"Merry Christmas :)";
return &z;
}
int main()
{
char ** ptr = NULL;
char ** (*fun_ptr)(); //declaration of pointer to the function
fun_ptr = &fun;
ptr = fun();
char C[256];
snprintf(C, sizeof(C), "\n %s \n Address of function: [%p]", *ptr, fun_ptr);
MessageBoxA(nullptr, C, "Hello World!", MB_ICONINFORMATION);
snprintf(C, sizeof(C), "\n Address of first variable created in fun() = [%p]", (void*)ptr);
MessageBoxA(nullptr, C, "Hello World!", MB_ICONINFORMATION);
return 0;
}
但是,这些消息框显示非常大的数字,并且它们似乎为空。
我希望能够像链接帖子中的示例输出一样在消息框中显示它们。
提前致谢。
(char*)"Merry Christmas :)"
中的强制类型转换是无用且危险的,因为字符串字面值已经是const char*
。 - phuclv0xxxxxxx
。:-) 我喜欢在消息框中显示它们,就像链接帖子示例输出中一样。 - Blueeyes789snprintf
?这看起来像是[C]代码。当你的代码可以运行时,请在https://codereview.stackexchange.com/上发布并请求评论。 - Mawg says reinstate Monica