C语言 --- 函数指针(初级)
1.函数指针:指向函数的指针变量.
函数在内存中也是有地址的,函数名代表函数的内存地址.
例子:函数:int sum(int a,int b);
int sum(int a,int b){
return a+b;
}
函数名+形参 就是函数
函数指针: 函数指针定义:int(*p)(int a,int b);
技巧,赋值函数声明int sum(int a,int b),将sum括起来加个*号,将sum改个名字,就定义了一个函数指针,p就是变 量,p = sum;int x = sum(2,3); int x = p(2,3);等价
2. 函数指针剖析
int(p*)(int a,int b) = NULL;
类型: int(*)(int a,int b)
变量名: p
初值: NULL
3. p = sum;
p = naxValue;
p可以指向任何一个函数;
4. typedef int (*PFUN)(int,int);
相当于把int(*)(int a,int b)改成了PFUN;
PFUN p = NULL;
P = sum;
给函数指针赋值,必须与定义的类型一致.此时p的类型是int
5. 回调函数
callback
函数回调核心就是把函数作为形参;
例子:int maxValue(int x,int y){
return a > b ? a : b;
}
int getValue(int x, int y){
return sum(x,y);// 此时getValue是求和;调用时 int a = getValue(2,4);
或者 return maxValue(x,y);// 此时getValue是求最大值;调用时 int a = getValue(2,4);
使用哪个就得改getValue函数的内部实现,不灵活,比较麻烦!!!!
}
int getValue(int x, int y,PFUN p){(PFUN p代表返回值是整形的函数指针)
return p(x, y);
}
int a = getValue(2,4,maxValue);
int b = getValue(2,4,sum);
两种的实现,getValue一点都没变,只是传参数的值.还可以添加其它函数,p随意指,很方便.
比如迅雷公司,此时getValue是核心的代码,是知识产权,不会让程序员修改,升级时只是添加函数,然后主函数调用就可 以了
最新文章
- C++强制类型转换
- SQLite3的基本使用
- 20款jquery下拉导航菜单特效代码分享
- 环形进度条带数字显示(canvas)
- 在预装win8的电脑上换win7系统讲解
- 表格单元格td设置宽度无效的解决办法 .
- C++对文件进行加密解密
- 【转】Jqgrid学习之ColModel API
- 读书笔记-你不知道的JS中-promise(2)
- 定时跳转的两种方式(html + javaweb)
- elasticsearch6.6及其插件安装记录(较详细)
- VMware配置Linux中APPache服务器
- 本博客已不再更新,新文章将发布在我的个人博客:https://www.tapme.top
- leetcode-856 Score of Parentheses
- muduo学习笔记(二)Reactor关键结构
- Mahout分步式程序开发 基于物品的协同过滤ItemCF
- 三层BP神经网络的python实现
- out.println(session.getLastAccessedTime());的返回值到底是毛线意思???
- Python 面向对象编程基础
- 内联汇编实现 memcpy 和 memset