函数指针及起别名

函数指针

函数指针是指向函数的指针变量 因此函数指针本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。如前所述,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

 

 函数指针不能做任何运算

posted @ 2020-09-02 14:42  特权E5  阅读(475)  评论(0编辑  收藏  举报