C++从入门到放弃之 函数指针
来源:互联网 发布:去除淘宝店铺模块缝隙 编辑:程序博客网 时间:2024/05/22 02:06
函数指针
指针是一个变量,是用来指向内存地址的。
函数是存放在内存代码区域内的,它们也有相应的地址,因此可以用指针来存取函数,这种指向函数入口地址的指针称为函数指针。
有了函数指针我们就可以很轻易的代替函数完成函数调用。
简单的写个小例子吧
--------------------------------------------------------------------
#include "stdafx.h"
#include<iostream>
using namespace std;
int myfun(int a, int b) {
return a + b;
}
int main()
{
int (*fp)(int, int); //定义函数指针,也可以用int (*fp)(int a,int b);
int s;
fp = myfun; //将函数myfun地址赋给fp,也可以用fp=&myfun;
s=(*fp)(3, 4); //通过指针调用函数,也可以用fp(3,4);
cout << s<<endl; //运行结果s=7;
return 0;
}
--------------------------------------------------------------------
myfun与fp的类型关系类似于int 与int *的关系。
函数myfun好像是一个如int的变量(或常量),而fp则像一个如int *一样的指针变量。
int i,*pi;
pi=&i; //与fp=&myfun比较。
这也让我们联想到了指针与数组的关系。
其实数组名就是指针;
例如 int *p;
int a[5];
p=a;
这就将数组中的第一个元素的地址赋给了指针p;
myfun的函数名与fp函数指针都是一样的,即都是函数指针。myfun函数名是一个函数指针常量,而fp是一个函数指针变量,这是它们的关系。
那 函数我们直接拿来调用不就好,为什么还要函数指针,其实指针就是一个工具,打个比方来说吧:你有了一只手,可以用来装备并切换武器打怪,比如可以装备刀子,或者装备棍子。当你的武器只有一种或者比较少的时候,可能这只手切换武器的功能不常用到。当到了后期,你的武器多了,那你因为有了这只能装备并切换武器的手,而可以更有效率的打怪。是不是美滋滋!!!
- C++从入门到放弃之 函数指针
- [C++ 从入门到放弃-01]C++STL之vector
- [C++ 从入门到放弃-02]C++STL之string
- [C++ 从入门到放弃-03]C++STL之set
- [C++ 从入门到放弃-04]C++STL之multiset
- C语言从入门到放弃
- C语言-从放弃到入门
- 傅里叶分析之从入门到放弃
- NDK开发 从入门到放弃(四:JNI函数、C与C++调用函数的区别)
- 从入门到放弃C语言-入门篇(1)
- 从入门到放弃C语言-入门篇(2)
- [C++ 从入门到放弃-05]C++STL之map映照容器
- [C++ 从入门到放弃-06]C++STL之multimap多重映照容器
- [C++ 从入门到放弃-07]C++STL之list双向链表容器
- [C++ 从入门到放弃-08]C++STL之stack堆栈容器
- [C++ 从入门到放弃-09]C++STL之queue队列容器
- [C++ 从入门到放弃-10]C++STL之bitset位集合容器
- [C++ 从入门到放弃-11]C++STL之priority_queue优先队列容器
- NC开发笔记——NC63开发方法总结
- 2011 北京 hdu 4090--GemAnd Prince(搜索)
- Dubbo框架的搭建以及入门案例
- 使用 Arrays 类操作 Java 中的数组
- chrome浏览器访问google的方法
- C++从入门到放弃之 函数指针
- pycharm pip源修改以及包管理
- 动态规划和背包dp问题
- 大型高性能ASP.NET系统架构设计
- Python网络爬虫与信息提取(二):网络爬虫之提取
- OpenCV-Python—图像平滑和模糊
- 《她身之欲》(珠三角阅流动人口社群特殊职业研究)阅读感想
- leetcode Min Stack 最小栈
- IAR Embebdded Workbench IDE转移设置到另一部电脑中