函数指针
函数指针是指向函数的指针变量。
函数指针本身首先应该是指针变量,只不过该指针变量指向函数。
C在编译的时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他变量一样。
用途: 调用函数和做函数的参数
函数指针的使用
其中void代表函数的返回值,fun_p:函数指针的名称,char* msg, char* title: 函数的参数列表。
void msg(char* msg,char* title){
//do something
}
void main(){
/*函数指针
void代表函数的返回值
fun_p:函数指针的名称
char* msg, char* title: 函数的参数列表
*/
void(*fun_p)(char* msg, char* title) = msg;
fun_p("消息内容", "标题");
getchar();
}
实例
定义了一个函数指针,可传入不同的函数,从而实现加饭、减法,亦可进行扩展,实现乘法、除法等,知道确保函数的参数和返回值相同即可。
int add(int a, int b){
return a + b;
}
int minus(int a, int b){
return a - b;
}
//此函数需要传递一个函数指针参数
//可以执行不同的函数
void msg2(int(*func_p2)(int a,int b),int m,int n){
//执行一段代码
m++;
//执行回调函数
int r = func_p2(m, n);
printf("%d\n", r);
}
void main(){
msg2(add, 10, 20); //加法
msg2(minus, 50, 10); //减法
}
打印结果
31
41