不少人在学习 C 语言的过程中总是会把指针函数与函数指针搞混淆, 为了让大家更好的去理解这两者之间的区别, 今天在这里整理了 C 语言中指针函数与函数指针的详解, 需要的朋友可以参考一下:
指针函数的定义: 指针函数是指带指针的函数, 即本质是一个函数函数都有返回类型(如果不返回值, 则为无值型), 只不过指针函数返回类型是某一类型的指针
小编推荐一个学 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);
在定义函数指针时请注意:
函数指针和它指向的函数的参数个数和类型都应该是致的;
函数指针的类型和函数的返回值类型也必须是一致的
小编推荐一个学 C 语言 / C++ 的学习裙 六九九, 四七零, 五九六 , 无论你是大牛还是小白, 是想转行还是想入行都可以来了解一起进步一起学习! 裙内有开发工具, 很多干货和技术资料分享!
通过函数指针调用函数
函数指针是通过函数名及有关参数进行调用的
与其他指针变量相类似, 如果指针变量 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 中指针函数与函数指针的详解就给大家介绍到这里了, 有自己更好的方法可以在下方评论处写出你的见解, 大家一起学习
来源: http://www.jianshu.com/p/4ee757ecc8c2