复习函数指针
2.函数指针
顾名思义,函数指针说的就是一个指针,但这个指针指向的函数,不是普通的基本数据类型或者类对象。
函数指针的定义如下:
int (*f)(int a, int b); // 声明函数指针
通过与1中指针函数的定义对比可以看到,函数指针与指针函数的最大区别是函数指针的函数名是一个指针,即函数名前面有一个指针类型的标志型号“*”。
当然,函数指针的返回值也可以是指针。
上面的函数指针定义为一个指向一个返回值为整型,有两个参数并且两个参数的类型都是整型的函数。
下面是利用函数指针分别求两个整数的最大值和最小值的用法。
- /*
- * 求最大值
- * 返回值是int类型,返回两个整数中较大的一个
- */
- int max(int a, int b) {
- return a > b ? a : b;
- }
- /*
- * 求最小值
- * 返回值是int类型,返回两个整数中较小的一个
- */
- int min(int a, int b) {
- return a < b ? a : b;
- }
- int (*f)(int, int); // 声明函数指针,指向返回值类型为int,有两个参数类型都是int的函数
- int _tmain(int argc, _TCHAR* argv[])
- {
- printf("------------------------------ Start\n");
- f = max; // 函数指针f指向求最大值的函数max
- int c = (*f)(1, 2);
- printf("The max value is %d \n", c);
- f = min; // 函数指针f指向求最小值的函数min
- c = (*f)(1, 2);
- printf("The min value is %d \n", c);
- printf("------------------------------ End\n");
- getchar();
- return 0;
- }