C++中关于函数的引用
这一块知识最常见的疑问就是:
#include <iostream>
#include <cstring>
using namespace std; int a[50];
int& fun(int& x)
{
return x;
}
int main()
{
int n;
while(cin>>n)
{
int i;
int tmp;
for(i = 1;i <= n;i++) {
cin>>tmp;
/*normal assignment way*/
//a[i] = tmp;
fun(a[i]) = tmp;
}
for(i = 1;i <= n-1;i++)
cout<<a[i]*2<<' ';
cout<<a[i]*2<<endl;
}
return 0;
}
形如这样的程序,在进行赋值操作的时候,为啥fun函数的返回值可以接受一个赋值呢?
要搞明白这个问题,我们不妨先来考虑另一个问题,来看code:
#include <stdio.h>
char *RetMemory()
{
char p[]="hello world\n";
return p;
}
int main( )
{
char *str=NULL;
str=RetMemory();
printf(str);
return 0;
}
str并不能够顺利输出“hello world\n”,因为那是在fun函数中的一个临时变量,在fun函数的调用结束后他的空间就自动被销毁了,这就引出了我们的问题,怎样才能将函数内的变量返回回去?其实很简单,我们只要在一开始接受参数的时候用引用即可,即我们的形参是引用,然后返回的值也是引用,这样直观的来看我们会发现函数就像一个管道,起到了传输变量的作用!
因此我们就不难理解为什么对左右移运算符的重载函数的返回类型和第一个参数的类型都要设置成引用:
ostream & operate <<(ostream &output, Complex &c)//定义流提取运算符“<<”重载函数
{
output<<”(”<<c.real<<”+”<<c.imag<<”i)”<<endl;
return output;
}
C++中关于函数的引用的更多相关文章
- javascript 在一个函数参数中包含另一个函数的引用
javascript函数的参数包含另一个函数的情形: <script> //b函数的参数func为另一个函数 function b(a, func) { alert(a); //调用参数 ...
- Python引用多个模块,调用模块中的函数时,要注意的地方
转自:http://blog.csdn.net/yjk13703623757/article/details/70237463 python模块是”从下到上”导入(import)的. 例如: a.py ...
- 详解php中函数的引用传递和返回 (附代码)
本篇文章带大家了解一下php的引用,详细介绍一下函数的引用传递和引用返回.有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助.php的引用(就是在变量或者函数.对象等前面加上&符号 ...
- C++ 11 中的右值引用
C++ 11 中的右值引用 右值引用的功能 首先,我并不介绍什么是右值引用,而是以一个例子里来介绍一下右值引用的功能: #include <iostream> #include &l ...
- mysql中find_in_set()函数的使用
首先举个例子来说: 有个文章表里面有个type字段,它存储的是文章类型,有 1头条.2推荐.3热点.4图文等等 .现在有篇文章他既是头条,又是热点,还是图文,type中以 1,3,4 的格式存储.那我 ...
- QT中使用函数指针
想仿命令行,所以定义了一个类,让一个String 对应一个 function,将两者输入list容器. 类中定义了 QString commandStr; void (MainWindow::*com ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- sql server中常用方法函数
SQL SERVER常用函数 1.DATEADD在向指定日期加上一段时间的基础上,返回新的 datetime 值. (1)语法: DATEADD ( datepart , number, date ) ...
- JavaScript中的函数表达式
在JavaScript中,函数是个非常重要的对象,函数通常有三种表现形式:函数声明,函数表达式和函数构造器创建的函数. 本文中主要看看函数表达式及其相关的知识点. 函数表达式 首先,看看函数表达式的表 ...
随机推荐
- Linux命令之查找
在Linux中,有非常多方法能够做到这一点.国外站点LinuxHaxor总结了五条命令,你能够看看自己知道几条.大多数程序猿,可能常常使用当中的2到3条,对这5条命令都非常熟悉的人应该是不多的. 1. ...
- 各个函数消耗的时间profiling和内存泄漏valgrind
来源:http://06110120wxc.blog.163.com/blog/static/37788161201333112445844/ ARM(hisi)上面的profiling和valgri ...
- JAVA 多线程同步与互斥
1. 为什么需要互斥: 互斥操作 保证了 多线程操作的 原子性 , java的 互斥 语义 有 synchronized 关键字 提供. 主要方式 有 同步代码块 和 同步方法 两种 2. ...
- 二叉排序树BST代码(JAVA)
publicclassTest{ publicstaticvoid main(String[] args){ int[] r =newint[]{5,1,3,4,6,7 ...
- nyoj 623
#include <iostream> using namespace std; int main() { int a[51][51],b[51][51],c[51][51],i,j,k, ...
- HTTPS 部署简要指南
许多Web开发者都知道SSL,但常见的情况是SSL没有完整地部署或者没有部署在它应该部署的地方.这篇关于何时及如何部署SSL的简要指南,将帮助你避免大多数常见错误. 要点 如果你有任何机密信息,或者你 ...
- (转)jQuery Validate 表单验证
在做网页表单时时常需要在客户端对表单填写的数据进行验证一番才能提交,我们可以通过自己编写JavasScript代码来验证,但是有时数据量过多时就会有些难度了.基于jQuery的jquery.valid ...
- php随机密码
<?php /* * php自动生成新密码自定义函数(带实例演示) 适用环境: PHP5.2.x / mysql 5.0.x * */ function genPassword($a=1,$b= ...
- javascript之闭包深入理解(二)
在上一节中,详细理解了作用域链和垃圾回收机制,似乎这两点跟闭包关系不大,但是仔细想一想就会发现,其实不然.这一节将通过上一部分的说明详细理解闭包.请看代码: function createCompar ...
- ThinkPHP实现RBAC
RBAC: role base access control 基于角色的用户访问权限控制 不同人员登录系统要显示不同的菜单项目 1.传统方式权限设置: 具体操作权限与用户直接联系: