首页 > 代码库 > 函数指针

函数指针

 1 #include <stdio.h> 2 #include <stdlib.h> 3  4 int f(int); 5  6 int main(int argc, char *argv[]) 7 { 8     int ans;

    /*创建函数指针pf,该函数返回值为整型,并有一个整型的形参*/
9 int (*pf)(int);10 11 /*下面两种写法都正确,&操作符是可选的,12 *因为函数名被使用的时候总是有编译器把它转换成为函数指针,13 *&操作符只是显示地说明了编译器将隐式执行的任务.14 */15 pf = f;16 pf = &f;17 18 /*简单地使用名字调用函数f,但它的执行过程可能和你想象的不太一样.19 *函数名f首先被转换成一个函数指针,该指针指定函数在内存中的位置.20 *然后,函数调用操作符调用该函数,执行开始于这个地址的代码.21 */22 ans = f(23);23 printf("%d\n", ans);24 25 /*对pf执行间接访问操作,它把函数指针转换成一个函数名.这个转换并不是真正需要的,26 *因为编译器在执行函数调用操作符之前又会把它转换回去.27 */28 ans = (*pf)(43);29 printf("%d\n", ans);30 31 /*和前两条语句的效果是一样的.32 *间接访问操作并非必要,因为编译器需要的是一个函数指针.33 */34 ans = pf(53);35 printf("%d\n", ans);36 37 return 0;38 }39 40 int f(int a)41 {42 43 return a + 10;44 45 }

 

函数指针