-
函数指针
-
函数指针是指向函数的指针变量,即本质是一个指针变量。
它是怎么定义的呢?
返回类型 (调用约定 *变量名)(参数列表);
例1:
//定义函数指针变量
int (__cdecl *pFun)(int, int);
//为函数指针变量赋值
//正常使用时应给予一个拥有可执行代码的地址, 这里只是举例
pFun = (int (__cdecl *pFun)(int, int))10;
//使用函数指针变量
int r = pFun(1, 2);
例2:
#include <Windows.h>
typedef int(__stdcall* _MyMessageBox)(int, LPSTR, LPSTR, int, int, int);
int main()
{
/*
76A0EED0 6A FF push 0FFFFFFFFh
76A0EED2 6A 00 push 0
76A0EED4 FF 75 14 push dword ptr [ebp+14h]
76A0EED7 FF 75 10 push dword ptr [ebp+10h]
76A0EEDA FF 75 0C push dword ptr [ebp+0Ch]
76A0EEDD FF 75 08 push dword ptr [ebp+8]
76A0EEE0 E8 3B 02 00 00 call 76A0F120
*/
_MyMessageBox MyMessageBox;
MyMessageBox = (_MyMessageBox)0x76A0F120;
MessageBoxA(0, "Hello World", "提示", 0);
LPSTR lpText = (LPSTR)"年轻人不讲武德";
LPSTR lpCaption= (LPSTR)"马大师";
MyMessageBox(0, lpText, lpCaption, 0, 0, -1);
//MyMessageBox(0, 0, 0, 0, 0, -1);
return 0;
}