5,530
社区成员
发帖
与我相关
我的任务
分享
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
int add(int a, int b)
{
printf("%d,%d\n", a, b);
return a + b;
}
int add8848(int a, int b)
{
printf("%d,%d\n", a, b);
MessageBoxA(0, "hello world", "run", 0);
return a + b;
}
void main()
{
printf("%x,%x\n", add, add8848);
printf("%x,%x\n", &add, &add8848);
int(*p)(int a, int b) = add;
printf("%x\n", &p);
int i = 0;
while (1)
{
printf("%d\n", p(i, 1));
Sleep(2000);
i++;
}
system("pause");
}
_declspec(dllexport) void go()
{
int(**p)(int a, int b) = (int(**)(int a, int b))0xd3fbc4; //一个指向函数指针的指针 二级函数指针
// &p的地址
*p = (int(*)(int a, int b))0x8d1069; //*p是一个函数指针类型
//&add8848的地址
}