函数指针 C++
来源:互联网 发布:知乎2016年度营销案例 编辑:程序博客网 时间:2024/06/06 01:33
博主还是一名在校学生,在此也是跟大家分享一下自己学习方面的理解见解,如果大大们发现有什么错误的可以留言,大家讨论讨论,
毕竟大家都是来学习的嘛,言归正传。
我现在所说的是函数指针,说到函数指针可能有些人会和指针函数混淆的,先说说两者的区别吧:
指针函数:
顾名思义啦,大家对比一下吧指针--函数 整形--函数 浮点型--函数 .....
就简单的说指针函数跟其他函数是一样的,不过的是指针函数的返回值是指针变量
或者是地址(int a;return &a 或者 int *a;return a;),指针指向地址的嘛,不行在看看它的声明吧:
int *abc(int a);//返回值一定是int类型的指针int ccc(int a);float bbb(float a);//类似等等之类都OK
格式:类型 *函数名(参数++);
//当然函数的参数也可以是多个
//--------------------------------------------------------------------------------------------------------------//
指针函数就到此为止了,下面讲讲函数指针了:
大概的说,指针指向的是变量的地址,而函数指针就是指向函数的地址。(当然函数指针用法也有要求滴)
先看看定义格式吧
void (*q)(int);void (*q)(int a);void (*q)(int ,int );void (*q)(int a,int b);int (*q)(int);int (*q)(int a);int (*q)(int ,int );float (*q)(float a,int b);//类似等等之类都OK
上面就有很多例子了,具体的格式如下:
格式:类型 (*名字)(参数1,参数2,参数3) //参数个数按要求的,具体看下面
现在说说要求的咯:
//图片一张下面
上面的图片都看见了吧,红色框的就是重点了
三个条件:
从左边开始第一框
1 它们的类型要相同
2 参数个数要相同
3 每个参数的类型都要对应相同
当然定义一个这样函数指针都可以对应多个符合要求的函数啦
void (*q)(int ,int );void abc(int a,int b);void aaa(int a,int b);q=&abc;q=&aaa;//这样会会覆盖上面的
下面就看看函数指针的具体调用/用法吧:
//可以去调试的哦,亲#include<iostream>using namespace std;void abc(int a,int b){cout<<a<<" "<<b<<endl;}void (*p)(int ,int );void (*q)(int ,int );int main(){abc(10,20);p=abc;q=&abc;(*p)(1,2);q(3,4);return 0;}
下面讲讲它的简单化/同义化:
typedef 这个关键词大家应该知道了吧,不知道的去问问度娘吧,就大概2分钟的时间就知道了
下面又是例子代码了:
//这些代码看看就知道了,就不多讲了#include<iostream>using namespace std;typedef void (*T)(int ,int);void abc(int a,int b){cout<<a<<" "<<b<<endl;}int main(){T p;T q;abc(10,20);p=abc;q=&abc;(*p)(1,2);q(3,4);return 0;}
身为函数指针当然也能做函数的参数来使用啦:
函数A的参数其中一个是函数指针来的,函数A用函数指针调用函数指针指向的函数叫回调函数
就如:
int abc(int a[],int n);int abc(int (*q)(int),int n);
像数组、指针等等变量做函数的参数一样
//--------------------------------------------------------------------------//
下一篇会详细讲讲回调函数的
欢迎大家来提意见滴^_^
- C指针函数 && 函数指针
- C++----函数&函数指针
- C++,C函数指针
- C/C++:函数指针
- 【c/c++】指针函数和函数指针
- 【C和指针】函数指针
- 《c和指针》函数指针
- c语言函数指针
- C/C++函数指针
- C语言函数指针
- [C]函数指针数组
- C 函数指针
- C 函数指针数组
- c 函数指针
- c/c++函数指针
- c 函数指针
- c中的函数指针
- c函数指针
- 单点登录sso的解决方案(一)IFRAME或超连接方式
- iOS App Programming Guide 官方文档
- VC++2010下编译STLport,Boost
- cocos2d-x 与 lua
- 单点登录sso的解决方案(二)CS结构实现方式
- 函数指针 C++
- SQLite3性能优化
- Linux学习计划
- 开启mysql远程连接服务
- oracle 保存查询结果,查询分组后的没组的第n条记录
- MySQL的C语言接口大全
- CAS SSO单点登录实例
- 处理对象相互copy属性的问题
- .NET领域驱动设计—初尝(一:疑问、模式、原则、工具、过程、框架、实践)