函数指针及起别名
函数指针
函数指针是指向函数的指针变量。 因此“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。函数指针有两个用途:调用函数和做函数的参数。
函数地址一般都在4的倍数处
函数首地址为 函数第一行指令位置
一般在程序装载基址+0x1000 处 为自定义函数跳转表
调试版会有
函数指针声明
int (_cdecl *pfun)(int ,int);
上述代码声明了一个函数指针pfun 其详细信息为 调用约定为_cdecl 参1整形 参2整形 返回值整形
函数直接调用:
例
定义一个函数
Void foo()
{
....
}
直接调用:
foo();
函数指针间接调用:
Void (*pfun) ();
Pfun = foo;
Pfun();
函数指针类型会进行强类型检查
Typedef 为某类型起别名
Typedef void (*pfun)();
那么 void (*)() == pfun
Typedef int DWORD
那么 int == DWORD
函数指针不能做任何运算
学如逆水行舟,不进则退。
博客园技术交流群 群 号:1073255314
(本群没人,刚刚建立 -_-!!! )