C/C++高阶语法:函数指针引用,引用与指针
来源:互联网 发布:sql 按月查询 编辑:程序博客网 时间:2024/05/29 10:37
1、函数指针引用的定义如下:
type (* &pFunc)(type,type) ( func);
2、看一段实例
int (*add)(int ,int);int (*&pFunc)(int ,int)(add);这个实例将pFunc引用指向add函数,我们知道引用一经绑定,便不能将其绑定到其他的对象,但是我们可以通过引用来修改其所绑定的对象。
3、分析下面这个简单的程序之后,应该都能明白个大概了吧
<pre name="code" class="cpp">#include <iostream>using namespace std;int Add(const int& a ,const int& b){ return a+b;}int Redu(const int &a,const int& b){ return a-b;}void Change(int (* &refFunc)(const int& ,const int & )){ refFunc = Redu;}int main(){ int (*p)(const int& ,const int& )(Add);//括号用于初始化函数指针 cout<<p(2,3)<<endl; //结果会输出5; Change(p); cout<<p(2,3)<<endl;//最终会输出-1 return 0;}
程序运行的结果如图所示:
程序中首先将函数指针p初始化为Add函数,然后通过change()函数,函数的形参为引用,然后在函数内部将修改引用的值,此时也就是修改了P的值,使得p指向了
Redu函数。
这个程序并不难,主要是理解函数指针和引用。
4、引用和指针的联系和区别。
通过前面的学习,我们知道我们可以通过指针或是引用间接的来访问或是操作其他的对象。指针(Pointers)是通过" * "和“ -> ”操作符,而reference 则是通过.操作符。
引用的也是通过指针来实现的,其具体的原理这里不再深究。我们所要做的就是了解何时使用引用,何时使用指针。
1)、我们知道没有所谓的空引用,即null reference,但是 指针可以为NULL。所以如果我们需要一个变量来指向某个对象,但是这个对象也有可能为空,此时我们应该使 用的是指针。换句话说,如果某个变量总是代表某个对象,同时这个对象一定不会为NULL,那么我们所使用的一定是引用。
2)、pointers可以被重新赋值,指向另外一个对象,但是reference却总是指向它最初获得的那个对象。
string s1("today");string s2("beautiful");string &rs = s1; //rs代表s1string *ps = &s1; //ps代表s1rs = s2; //rs代表s1,此时s1 = "beautiful"ps = &s2; //ps代表s2
所以我们可以这样概括一下:当你知道你需要将某个变量指向某个对象时,而且绝不会将其指向其他东西,或是当你实现一个操作符而其语法需求无法由pointers完成,那么我们就应该选用referencs.。
0 0
- C/C++高阶语法:函数指针引用,引用与指针
- c++-引用函数指针
- 【c++】指针与引用
- 【C++】指针与引用
- C++【引用与指针】
- 指针与引用c
- 【C++】指针与引用
- c中指针与引用
- 指针与引用(C++)
- C/C++引用与指针
- 【C/C++】指针与引用的区别
- C |java 指针|引用
- C/C++指针 引用
- 引用,指针,C++,java
- c++:引用和指针
- C++引用 & C 指针
- 函数 指针与引用
- C与C++之引用与指针
- 通用linux接口服务器参数调优
- 第十周项目3-利用二叉树遍历思想解决问题(2)输出所有叶子节点
- 第8周项目5 计数的模式匹配
- jQuery.qrcode.js客户端生成二维码,支持中文并且可以生成LOGO
- 【iOS】汉字转拼音
- C/C++高阶语法:函数指针引用,引用与指针
- 第十周 项目3-利用二叉树遍历思想解决问题(1)
- CentOS中由一般用户切换为root用户
- 歌手大赛计分函数版
- 第九周项目4-广义表算法库及应用
- Android音乐播放器(2)从SD卡中读取音乐
- uva 120——Stacks of Flapjacks
- python set
- 2015/11/06 iOS学习笔记