int * func_sum(int n)
这是指针函数,返回值是指针,也就是地址。
int (*p)(int a, int b);
int (*p)(int, int);
这是函数指针,定义了一个指针,名字叫p,函数类型的,下面是省略写法。
比如我有一个函数,我可以把这个函数的地址赋值给指针(函数名就是函数的地址),前提是指针要和函数是同一个类型的。
int max(int a, int b)
{
}
函数指针调用
int a;
a = (*p)(10, 15);
a = p(10, 15);//也可以这么写
常用场景:在一个函数中调用另一个未知的函数,多用于多小组分工协作
#include<stdio.h>
typedef int(*jusuan)(int,int); //定义了一个函数指针类型,并且起了个别名叫jusuan
int fun(int a,int b)//定义了一个功能函数
{
int c=0;
c=a+b;
return c;
}
int fun2(jusuan a)//定义了一个jusuan类型的指针,形参名字叫a,在这个函数中调用功能函数
{
int c=0,e=1,f=2;
c=(*a)(e,f);
printf("%d",c);
}
int main(void)
{
fun2(fun);
return 0;
}