C:函数指针解读
2012-05-13 19:51
274 查看
函数指针从名子上看就知道它也是一种指针,一个指向函数入口地址的指针,举个简单的例子来看看函数指针的用法。
1、通过函数指针调用函数。
运行结果:
2、函数指针做另一个函数的参数。
第二种用法就是传说中的回调函数。
1、通过函数指针调用函数。
#include <stdio.h> #include <stdlib.h> int Sum(int a, int b) { return a + b; } int Sub(int a, int b) { return a - b; } int main(int argc, char *argv[]) { int iTmp = 0; int (*pf)(int, int); /*申明一个函数指针,它带有两个整形参数,返回一个整形*/ pf = Sum; /*函数指针赋值,使其指向函数Sum*/ iTmp = pf(20, 10); /*调用*/ printf("Sum is : %d\n", iTmp); pf = Sub; /*使其指向函数Sub*/ iTmp = pf(20, 10); /*调用*/ printf("Sub is : %d\n", iTmp); system("PAUSE"); return 0; }
运行结果:
Sum is : 30 Sub is : 10 请按任意键继续. . .
2、函数指针做另一个函数的参数。
#include <stdio.h> #include <stdlib.h> int Sum(int a, int b) { return a + b; } int Sub(int a, int b) { return a - b; } /*定义函数指针类型*/ typedef int (*pfFun)(int, int); /*带有函数指针参数的函数*/ int TestFun(int a, int b, pfFun pf) { int i = 0; i = pf(a, b); return i; } int main(int argc, char *argv[]) { int iTmp = 0; iTmp = TestFun(20, 10, Sum); /*函数指针赋值为函数Sum*/ printf("Tmp is: %d\n", iTmp); iTmp = TestFun(20, 10, Sub); /*函数指针赋值为指针Sub*/ printf("Tmp is: %d\n", iTmp); system("PAUSE"); return 0; }运行结果:
Tmp is: 30 Tmp is: 10 请按任意键继续. . .
第二种用法就是传说中的回调函数。
相关文章推荐
- C:返回值为指针的函数解读
- C:返回值为指针的函数解读
- [C/C++]如何解读返回函数指针的函数声明
- C:函数指针解读
- 如何解读返回函数指针的函数声明
- 解读C的声明,解析各种函数、指针组合的声明
- 解读C语言中函数指针数组构成的复杂定义
- [C/C++]如何解读返回函数指针的函数声明
- C:函数指针解读
- [C/C++]如何解读返回函数指针的函数声明
- 返回值为指针的函数解读
- 如何解读返回函数指针的函数声明
- 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)
- 如何解读返回函数指针的函数声明
- [转+修改]一般函数指针和类的成员函数指针
- 指针函数和函数指针
- C语言结构体及typedef关键字定义结构体别名和函数指针的应用
- C++基础重温之一:指向函数的指针
- 函数指针学习笔记
- 函数返回的如果是指针类型则使用自动释放池: