函数指针
【函数指针】,顾名思义,就是指向函数的指针
如下,定义一个int型的函数指针,可用来指向int型的函数
int (*fun)(int,int);
请注意区分【指针函数】
如下,声明一个返回类型为int型指针的函数
int* fun(int,int);
函数指针的使用
定义的函数指针只能指向相同类型的函数(包括类型、参数类型,参数个数)
如下,定义的函数指针 fun 能够指向 Sum函数(Sum 就是函数本身的地址,因此不必取地址符号&,直接赋给 fun)
int Sum(int a,int b){
return a+b;
}
int (*fun)(int,int);
fun = Sum;
使用函数指针fun的方式有两种:
fun(1,2);
(*fun)(1,2);
可见,第一种根普通函数的调用没有区别,第二种清晰标示了fun是个函数指针,因此平常使用我们推荐第二种方式
完整代码
#include<stdio.h>
int Sum(int a,int b){
return a+b;
}
int main(){
int (*fun)(int,int);
fun = Sum;
printf("%d\n",(*fun)(1,2));
return 0;
}
运行结果
结构体中的函数指针可作为成员函数
include<stdio.h>
int Sum(int a,int b){
return a+b;
}
struct DATA{
int a;
float b;
char c;
int (*Fun)(int a,int b)=Sum;
}Data;