1.指针函数:简单扩句,返回值是指针的函数(很简单,非要取个名字)
返回值是函数名f前面的全部
int* f(void)
{
return 0;
}
//使用他也很简单
定义一个相同的来接受他
int* p = f();
2.函数指针:
扩句:指向函数的指针变量
写法:int (*f)(void);
函数指针应用实例
程序第一句typedf int(*FP)(int,int);
这句话定义了一个函数指针,FP,这个指针指向有两个int输入参数的函数
再看如何调用的
1.那里是在定义函数形参时使用的,他表示这个函数要传入一个FP函数指针类型,指针指向有两个int输入参数的函数又因为函数名就是保存首地址,可以看为指针,所以在2.那里调用时,就可以直接传入函数名,sum
当传入sum之后,函数指针就指向sum的首地址了,再传入参数,就可以运行sum功能
这里*fp
相关知识:
函数的名称保存他的地址,程序打印出了函数add的首地址(我们在定义一个函数后,函数会被分配一块内存,这个内存多大我们不关心,我们关心首地址)
这个和数组的写法差不多吧,获取数组首地址可以写成 &a,也可以写成a。只要编译器认为你在获取地址就行,两种写法没有太大区别,记住就ok。
先看括号里面,c先和中括号结合,c[10],所以c就是数组,再看前面有个*号,所以这个数组里面装的是指针,即指针数组,然后再和后面的括号结合,这个数组里包含的指针指向函数,再看最前面,char*,说明这个函数的返回值就是指向char的指针