快捷搜索:  汽车  科技

c语言指针在函数中的用法(指针函数和函数指针)

c语言指针在函数中的用法(指针函数和函数指针)来看一个demo:(求两个数的和)int (*fun)(int x int y);这是一个int型的指针,该指针指向的地址为一个函数的首地址即函数入口地址,该函数有两个形参。这个*是修饰这个函数的,故和fun写在一起,用括号括起来。sum这个函数的返回值为U8类型的指针即为一个U8类型的地址,c这个内存空间中存放的是输入的两个数的和,p为一个指针,存放的为存放两个数的和的存储空间的地址,将p返回即返回的为一个指针,在主函数中,重新定义的p为一个指针,该指针指向sum函数,*P为该地址中存放的值。函数指针,顾名思义,这是一个指针,只不过这个指针是一个指向一个函数入口的指针。声明格式:类型说明符 (*函数名) (参数)。如:

指针函数

指针函数,顾名思义,是一个函数,只不过这个函数的返回值为一个指针即返回的值为一个地址。

申明格式为:*类型标识符 函数名(参数表)。如:

int* fun(int x int y);

我习惯把int和*写在一起,其实这样也更便于理解,fun为我们定义的一个函数,可传入两个int型的参数,这个函数的返回值为一个int型的指针。

来看一个demo:(求两个数的和)

c语言指针在函数中的用法(指针函数和函数指针)(1)

sum这个函数的返回值为U8类型的指针即为一个U8类型的地址,c这个内存空间中存放的是输入的两个数的和,p为一个指针,存放的为存放两个数的和的存储空间的地址,将p返回即返回的为一个指针,在主函数中,重新定义的p为一个指针,该指针指向sum函数,*P为该地址中存放的值。

函数指针

函数指针,顾名思义,这是一个指针,只不过这个指针是一个指向一个函数入口的指针。

声明格式:类型说明符 (*函数名) (参数)。如:

int (*fun)(int x int y);

这是一个int型的指针,该指针指向的地址为一个函数的首地址即函数入口地址,该函数有两个形参。这个*是修饰这个函数的,故和fun写在一起,用括号括起来。

来看一个demo:(求两个数的和)

c语言指针在函数中的用法(指针函数和函数指针)(2)

定义一个普通的求和函数add,在主函数里面定义一个函数指针,将该函数指针指向add函数,在传入实参,进行的也是求和运算了。其实函数指针也就是c 里面多态的理论基础了。

简单总结一下函数指针和指针函数:

函数指针:是一个指针,该指针指向函数的入口地址

指针函数:是一个函数,该函数的返回值为指针类型

猜您喜欢: