指针与函数(三)
三 .指向函数的指针
函数和数组一样,经系统编译后,其目标代码在内存中连续存放,其名字本身就是一个地址,是函数的入口地址。C语言中,指针可以指向变量,也可以指向函数。
指问函数的指针的定义格式为 类型名(*指针变量名)参数表 其中参数表为函数指针所指向函数都所有形参。
定义了指向函数的指针以后,必须将一个函数名(函数的入口地址)赋给函数指针,然后才能用函数指针间接调用该函数。如
int(*pc)(int,int); /*定义指向函数的指针pc,限定pc所指函数有两个整型参数*/
int ave(inta,intb); /*声明有两个整型参数的函数 */
pc=ave; /*指针pc指向函数ave*/
#include <stdio.h>
// 定义求最大值函数
int max(int a, int b) {
return a > b? a : b;
}
// 定义求最小值函数
int min(int a, int b) {
return a > b? b : a;
}
// 定义求平均值函数
int ave(int a, int b) {
return (a + b) / 2;
}
int main() {
int a = 10, b = 15, c;
// 定义指向函数的指针 pc,限定 pc 所指函数有两个整型参数
int (*pc)(int, int);
// 定义指向函数的指针数组 p,不限定所指函数的参数
int (*p[2])();
// pc 指向 ave 函数
pc = ave;
// p[0]指向 max 函数
p[0] = max;
// p[1]指向 min 函数
p[1] = min;
c = (*pc)(a, b);
printf("平均值是:%d\n", c);
c = (*p[0])(a, b);
printf("最大值是:%d\n", c);
c = (*p[1])(a, b);
printf("最小值是:%d\n", c);
return 0;
}