天天看点

C语言-函数指针与函数指针作为函数参数

    函数指针,即:通过指针变量引用函数(拿到函数在内存中的起始地址,也即:函数执行的入口地址),通过函数指针不仅可以实现函数的间接调用;而且,将函数指针作为函数参数进行传递,还可以实现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;
}
           
C语言-函数指针与函数指针作为函数参数

继续阅读