指针函数
指针函数,顾名思义,是一个函数,只不过这个函数的返回值为一个指针即返回的值为一个地址。
申明格式为:*类型标识符 函数名(参数表)。如:
int* fun(int x,int y);
我习惯把int和*写在一起,其实这样也更便于理解,fun为我们定义的一个函数,可传入两个int型的参数,这个函数的返回值为一个int型的指针。
来看一个demo:(求两个数的和)
sum这个函数的返回值为U8类型的指针即为一个U8类型的地址,c这个内存空间中存放的是输入的两个数的和,p为一个指针,存放的为存放两个数的和的存储空间的地址,将p返回即返回的为一个指针,在主函数中,重新定义的p为一个指针,该指针指向sum函数,*P为该地址中存放的值。
函数指针
函数指针,顾名思义,这是一个指针,只不过这个指针是一个指向一个函数入口的指针。
声明格式:类型说明符 (*函数名) (参数)。如:
int (*fun)(int x,int y);
这是一个int型的指针,该指针指向的地址为一个函数的首地址即函数入口地址,该函数有两个形参。这个*是修饰这个函数的,故和fun写在一起,用括号括起来。
来看一个demo:(求两个数的和)
定义一个普通的求和函数add,在主函数里面定义一个函数指针,将该函数指针指向add函数,在传入实参,进行的也是求和运算了。其实函数指针也就是c++里面多态的理论基础了。
简单总结一下函数指针和指针函数:
函数指针:是一个指针,该指针指向函数的入口地址
指针函数:是一个函数,该函数的返回值为指针类型