函数指针——是一个指向函数的指针
https://www.runoob.com/cprogramming/c-fun-pointer-callback.html
#include <stdio.h>
int max(int x, int y)
{
return x > y ? x : y;
}
int main(void)
{
/* p 是函数指针 */
//(*p)是一个整体
//(*p)左边是和函数同样类型的返回值类型int
//(*p)右边是
int (*p)(int, int) = &max; // &可以省略
//下面这个(*p1)也是个函数指针,指向同一地址
int (*p1)(int, int) = &max;
int a, b, c, d;
//这个&max还是地址,因为地址是16进制的,
printf("%d\n", &max);
printf("%p\n", &max);
printf("%p\n", *p);
printf("%p\n", p);
printf("%p\n", *p1);
printf("请输入三个数字:");
scanf("%d %d %d", &a, &b, &c);
/* 与直接调用函数等价,d = max(max(a, b), c) */
d = p(p(a, b), c);
printf("最大的数字是: %d\n", d);
return 0;
}
解释的有点绕,多包涵。
//声明函数指针首先要有个函数
int sum(int a,double b){
//TODO 这个TODO就是要干什么的代码,意思是可以在这里写要实现的代码,java自动生成的代码中常见。
//不知道这个强转int对不对,反正就是这么个意思
return a>b?a:(int)b;
}
int main(){
//函数指针类型为函数返回值类型因为sum返回值为int,指针类型也是int
//(*P)就是函数指针
//后面的参数跟该指针指向的函数参数类型相同
//等号后面就是把函数名作为指针指向地址,赋值给指向该函数的指针。
int (*p)(int a,double b) = ∑
}