函数指针,即:通过指针变量引用函数(拿到函数在内存中的起始地址,也即:函数执行的入口地址),通过函数指针不仅可以实现函数的间接调用;而且,将函数指针作为函数参数进行传递,还可以实现C语言下-相对于同一个函数指针在独立功能模块下的多态复用。举例如下,
#include <stdio.h>
#include <stdlib.h>
int (*pFunc)(int m,int n);
int (*pFunc1)(char*);
int maxVal(int m,int n);//求最大值
int minVal(int m,int n);//求最小值
void solveMsg(char* msg,void (*pFunc)(char*));//处理消息
void solveMsg(char* msg,int (*pFunc)(char*)){
pFunc(msg);
}
int sloveMode1(char* msg){
puts(msg);
printf("处理模式1\n");
return 1;
}
int sloveMode2(char* msg){
puts(msg);
printf("处理模式2\n");
return 1;
}
int main(int argc,char** argv){
char *str="Hello,World!\t";
//2-函数指针
pFunc=&maxVal;
printf("%d\n",pFunc(12,2));
//修改函数指针
pFunc=&minVal;
printf("%d\n",pFunc(12,2));
//1-函数指针作为函数参数
pFunc1=&sloveMode1;
solveMsg(str,pFunc1);
pFunc1=&sloveMode2;
solveMsg(str,pFunc1);
return 0;
}
//求最大值
int maxVal(int m,int n){
return m>n?m:n;
}
//求最小值
int minVal(int m,int n){
return m<n?m:n;
}