函数指针

简介:

程序中每个函数都位于内存中的某个位置,所以存在指向那个位置的指针------函数指针。

  函数指针最常用的两个地方是:转换表和作为参数传递给领一个函数。和其他的指针一样,对函数指针执行间接访问之前必须把它初始化为指向某个函数。

int   f(int);
int  (*pf)(int) = &f;

这段代码告诉我们,创建了一个函数指针,并把它初始化为指向函数f。函数指针的初始化也可以通过一条赋值语句来完成。在函数指针初始化之前,具有f的原形是很重要的,否则编译器就无法检查f的类型是否与pf所指向的类型一致。

初始化表达式中的&操作符是可选的,因为函数名被使用时总是有编译器把它转化为函数指针。&操作符只是显式的说明了编译器将隐式执行的任务。

1 int ans;
2 ans = f(25);
3 ans = (*pf)(25);
4 ans = pf(25);

第2条语句是简单的调用函数f,但是它的执行过程确实很复杂的。函数名f首先被转换为一个函数指针,该指针指定函数在内存中的位置。然后函数调用操作符调用该函数,执行开始于这个地址代码。

第3条语句是对pf执行期间间接访问操作,他把函数指针转换为一个函数名。这个转换并不是真正需要的,因为在编译器执行函数调用操作符之前又会把它转回去。这条语句和前一条语句完全一致。

第4条语句和前两条语句效果一致。间接访问操作并非必须,因为编译器需要的是一个函数指针。

 

 




本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/p/3833928.html ,如需转载请自行联系原作者


相关文章
|
2月前
|
C++
c++中函数指针
c++中函数指针
12 1
|
2月前
|
存储 程序员 C++
C++函数指针
C++函数指针
|
1月前
函数指针
函数指针。
8 1
|
4月前
|
C语言
指针函数和函数指针
指针函数和函数指针
21 0
|
9月前
|
C++
C++函数指针
C++函数指针
37 1
函数指针:
函数指针:本质是指针变量 保存的是函数的入口地址
函数指针:
|
编解码 Cloud Native 网络协议
【C/C++】函数指针与指针函数
函数指针是指向函数的指针变量。 因此函数指针本质上是一个指针变量,只不过该指针变量指向函数。指针变量也可以指向整型变量、字符型、数组,也可以指向函数。
121 0
|
编译器
函数指针做函数参数 使用总结及其意义
函数指针做函数参数 使用总结及其意义
135 0
函数指针做函数参数 使用总结及其意义
|
C++ 索引
C/C++ 函数指针
函数指针 函数是存放在内存的代码区域内 栗子 int test(int a){ return a; } int main(int argc, const char * argv[]){ // 这里定义了一个参数为int类型的函数,函数的返回值为int类型的指针fp int (*fp)(int a); // 将test函数的地址赋值给指针fp,完成一个指向函数。
791 0