不少人在学习C语言的过程中总是会把“指针函数”与“函数指针”搞混淆,为了让大家更好的去理解这两者之间的区别,今天在这里整理了C语言中指针函数与函数指针的详解,需要的朋友可以参考一下: 指针函数的定义:指针函数是指带指针的函数,即本质是一个函数。函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。 指针函数:返回值是一个指针 代码示例: int* add(int a, int b) { int *p = new int(0); *p = a + b; return p; } 一个函数不仅可以带回一个整型数据的值,字符类型值和实型类型的值,还可以带回指针类型的数据,使其指向某个地址单元。 返回指针的函数,一般定义格式为: 类型标识符 *函数名(参数表) int *f(x,y); 其中x,y是形式参数,f是函数名,调用后返回一个指向整型数据的地址指针。f(x,y)是函数,其值是指针。 函数指针 指向函数的指针包含了函数的地址,可以通过它来调用函数。声明格式如下: 类型说明符 (*函数名)(参数) 其实这里不能称为函数名,应该叫做指针的变量名。函数类型 (*指针变量名)(形参列表); “函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表”表示指针变量指向的函数所带的参数列表。 例如: int (*f)(int x); double (*ptr)(double x); 在定义函数指针时请注意: 函数指针和它指向的函数的参数个数和类型都应该是—致的; 函数指针的类型和函数的返回值类型也必须是一致的。 通过函数指针调用函数 函数指针是通过函数名及有关参数进行调用的。 与其他指针变量相类似,如果指针变量pi是指向某整型变量i的指针,则*p等于它所指的变量i;如果pf是指向某浮点型变量f的指针,则*pf就等价于它所指的变量f。同样地,*f是指向函数func(x)的指针,则*f就代表它所指向的函数func。所以在执行了f=func;之后,(*f)和func代表同一函数。 由于函数指针指向存储区中的某个函数,因此可以通过函数指针调用相应的函数。现在我们就讨论如何用函数指针调用函数,它应执行下面三步: 首先,要说明函数指针变量。 例如:int (*f)(int x); 其次,要对函数指针变量赋值。 例如: f=func; (func(x)必须先要有定义) 最后,要用 (*指针变量)(参数表);调用函数。 例如: (*f)(x);(x必须先赋值) 不知道大家有没有看懂呢,这下在学习arm的时候就不会搞混淆了吧! arm中指针函数与函数指针的详解就给大家介绍到这里了,有自己更好的方法可以在下方评论处写出你的见解,大家一起学习。需要哪方面的只是也可以通过评论告诉我,后续会不断的给大家带来精彩文章。 |
|