????函数指针,即:通过指针变量引用函数(拿到函数在内存中的起始地址,也即:函数执行的入口地址),通过函数指针不仅可以实现函数的间接调用;而且,将函数指针作为函数参数进行传递,还可以实现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";
pFunc=&maxVal;
printf("%d\n",pFunc(12,2));
pFunc=&minVal;
printf("%d\n",pFunc(12,2));
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;
}
|