C++ 函数指针
来源:互联网 发布:诺基亚n9deb的软件 编辑:程序博客网 时间:2024/06/03 20:45
一,函数指针的基础知识
与数据项类似,函数也有地址,函数的地址是存储其二进制代码的起始位置。
二,函数指针
假设我们设计一个名为processArray()的函数,可以使用不同的方式来处理给定的数组。要实现这种目标,processArray()函数的第二个参数设置为函数指针。要使用函数指针,为此必须完成下面的工作:
1,获取函数的地址
函数的地址就是函数名。
2,声明函数指针
声明指向函数的指针时,也必须指定指针指向的函数类型。这意味着声明必须指定函数的返回值类型以及函数的特征标。为提供正确的运算符优先级,必须在声明中使用括号将*pf括起来。不然,*pf(int)意味着pf是返回指针的函数,而(*pf)(int)意味着pf是一个指向函数的指针。
double (*pf)(int);double cube(int);pf = cube;
3,使用函数指针来调用函数
(*pf)扮演的角色与函数名相同
double (*pf)(int);double cube(int);pf = cube;(*pf)(5);
4,可以使用typedef进行简化
typedef void (*p_fun)(int nums[], int n);void reverseOrder(int nums[], int n);p_fun p;
下面是完整的实例
#include <iostream>using namespace std;typedef void (*p_fun)(int nums[], int n);void processArray(int nums[], int n, p_fun p);void reverseOrder(int nums[], int n); //逆序输出函数中的元素void positiveOrder(int nums[], int n); //正序输出函数中的元素 int main(){ int nums[5] = {1, 2, 3, 4, 5}; int n = 5; processArray(nums, n, reverseOrder); processArray(nums, n, positiveOrder); return 0;}void processArray(int nums[], int n, p_fun p){ p(nums, n);}void reverseOrder(int nums[], int n){ for(int i = n - 1; i >= 0; i --){ cout<<nums[i]<<" "; } cout<<endl;}void positiveOrder(int nums[], int n){ for(int i = 0; i < n; i ++){ cout<<nums[i]<<" "; } cout<<endl;}
0 0
- C指针函数 && 函数指针
- C++----函数&函数指针
- C++,C函数指针
- C/C++:函数指针
- 【c/c++】指针函数和函数指针
- 【C和指针】函数指针
- 《c和指针》函数指针
- c语言函数指针
- C/C++函数指针
- C语言函数指针
- [C]函数指针数组
- C 函数指针
- C 函数指针数组
- c 函数指针
- c/c++函数指针
- c 函数指针
- c中的函数指针
- c函数指针
- ORACLE数据库汉字占几个字节问题
- 【转】Mysql 约束(Constraint)
- 从零开始
- Java单链表实现
- Linux 常用命令个人记录
- C++ 函数指针
- 35 个 Java 代码性能优化总结
- Android运行时权限工具类
- 娱乐视频直播背后的技术支持——DASH重构
- MongoDB的存储结构及对空间使用率的影响
- 【Prison Break】第五天(4.1)
- C#的山寨版的串口调式助手
- 【CAS】自定义数据库连接配置
- 1 多线程下载一个文件(普通的java工程:java实现)