一:
可以把函数定义为引用类型,这时函数的返回值即为某一变量的引用(别名),因此,它相当于返回了一个变量,所以可对其返回

值进行赋值操作。这一点类同于函数的返回值为指针类型。 由于函数调用返回的引用类型是在函数运行结束后产生的,所以函数不

能返回自动变量和形参。返回的变量的引用,这个变量必须是全局变量或静态局部变量,即存储在静态区中的变量。

看个例子:

/*
* main.cpp
*
*  Created on: 2012-9-18
*      Author: china
*
*      注意:由于函数调用返回的引用类型是在函数运行结束后产生的,所以函数不能返回自动变量和形参。
返回的变量的引用,这个变量必须是全局变量或静态局部变量,即存储在静态区中的变量。
*
*/
#include <iostream>
using namespace std;
int a = 4;
//函数返回a的引用,即a的别名!!!!
int &f(int x) {
//static int a=4;   和全局变量的效果一样哦
a = a + x;
return a;
}
int main(int argc, char **argv) {
int t = 5;
cout << f(t) << endl;//输出  9    (a=9)  t=5
f(t) = 20;//先调用,再赋值  a=20    t=5
cout << f(t) << endl;//输出25  (a=25)    t=5
t = f(t);//先调用,再赋值   a=30,t=30
cout << f(t) << endl;//60
return 0;
}

(二):我们都知道,函数作为一种程序实体,它有名字、类型、地址和存储空间,一般说来函数不能作为左值(即函数不能放在

赋值号左边)。但如果将函数定义为返回引用类型,因为返回的是一个变量的别名,就可以将函数放在左边,即给这个变量赋值。

eg:

eg:/*
* main.cpp
*
*  Created on: 2012-9-18
*      Author: china
*
*      我们都知道,函数作为一种程序实体,它有名字、类型、地址和存储空间,
*      一般说来函数不能作为左值(即函数不能放在赋值号左边)。但如果将函数定义为返回引用类型,
*      因为返回的是一个变量的别名,就可以将函数放在左边,即给这个变量赋值。
*
*/
#include <iostream>
using namespace std;
int &f(int &x);
int main(int argc, char **argv) {
int a=3;
cout<<f(a)<<endl;//a=4,输出3
f(a)=20;//先调用后赋值a=5
a+=5;//a=10
cout<<f(a)<<endl;//10
a=f(a);//a=11,先调用后赋值
cout<<f(a)<<endl;//11,a=12
return 0;
}
int &f(int &x)
{
static int t=2;
t=x++;
return t;
}

引用之函数返回值 函数的返回值为引用类型《三》相关推荐

  1. C++11 右值引用与常量左值引用保存临时变量(函数返回值)的底层分析

    右值引用保存临时变量(函数返回值)的问题 :临时变量是右值 1.普通变量接收函数返回值: 2.右值引用变量接收函数返回值: 3.用const int& 和右值引用是一样的效果,只是const ...

  2. 如何引用传递参数从一个函数中得到多个返回值

    2019独角兽企业重金招聘Python工程师标准>>> 通过"引用"传递参数的方法从一个函数中得到多个返回值.就像三元运算符一样,大部分受过正式编程训练的程序员都 ...

  3. Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法

    函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...

  4. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  5. Go 学习笔记(15)— 函数(01)[函数定义、函数特点、多值返回、实参形参、变长参数,函数作为参数调用]

    1. 函数定义 Go 语言最少有个 main() 函数.函数声明告诉了编译器函数的名称,返回类型和参数. func funcName(parameter_list)(result_list) {fun ...

  6. 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )

    文章目录 一.判定指针合法性 二.数组越界 三.不断修改指针变量值 四.函数中将栈内存数组返回 五.函数间接赋值形参操作 六.指针取值与自增操作 一.判定指针合法性 判定指针合法性时 , 必须进行如下 ...

  7. C语言函数怎么像python那样返回多个值?(三种方法:1、设置全局变量 2、传递指针 3、使用结构体返回不同类型的数据)

    引用文章:c语言函数可不可以返回多个值 文章目录 方法一:设置全局变量 例如:利用一个函数求出正方形的周长和面积. 方法二:使用数组名或指针作为函数的形参 实例2:编写函数求一维整形数组的最大值与最小 ...

  8. go函数详解:函数定义、形参、返回值定义规范、函数内存分析、不支持重载、支持可变参数、基本数据类型和数组默认都是值传递的、支持自定义数据类型、函数返回值命名

    引入 [1]为什么要使用函数: 提高代码的复用型,减少代码的冗余,代码的维护性也提高了 [2]函数的定义: 为完成某一功能的程序指令(语句)的集合,称为函数. [3]基本语法 func 函数名(形参列 ...

  9. java函数返回多个值_深入理解被调函数与主调函数之间的传值、传址、值返回、址返回...

    函数的英文是function,有功能的意思,函数的作用在于合理分配功能,增强程序的可读性.合理分解功能,降低程序的复杂性.隐藏函数内部的数据和实现,尽可能将问题局限于函数本身. 函数可以理解为一种功能 ...

  10. 函数的返回竟然能作为左值

    函数返回尽然能作为左值     函数参数里的二级指针  函数参数里的(数据类型引用) 经典不是优雅 #include <iostream> #include <iomanip> ...

最新文章

  1. c++链表形参丢失_LeetCode 例题精讲 | 01 反转链表:如何轻松重构链表
  2. SQL CASE WHEN用法
  3. pkill 和 pgrep总结
  4. sysfs cannot create duplicate filename问题
  5. python pandas爬取网页成绩表格,计算各个类别学分
  6. spring mvc DispatcherServlet解读
  7. 【算法竞赛学习】二手车交易价格预测-Task2数据分析
  8. 图片大_2020跨年图片 元旦快乐祝福图片 2019再见2020你好图片大全 新年图片
  9. linux上的定时器上的jiffies,Linux kernel -- 定时器/jiffies
  10. Java学习笔记:创建线程的两种方法
  11. 计算机专业认识实习目的,计算机专业实习目的与意义
  12. 怎么把Word转PDF格式?分享几种好用的转换方法
  13. Linux_常用的磁盘列阵(RAID)
  14. Multipart/form-data文件上传简介
  15. 5步教你成功求职进入BAT
  16. python使用opencv如何保存图片_OpenCV Python 保存图片
  17. select和select1
  18. 红黑树,超强动静图详解,简单易懂
  19. 远程监控电脑屏幕用什么软件?
  20. mysql mklink_windows系统下的文件夹链接功能mklink/linkd

热门文章

  1. Hibernate之Inverse的用法
  2. 【开发问题记录①】关于滑动CollectionView时ContentSize变化的问题
  3. 七、MySQL中的字符集 - 系统的撸一遍MySQL
  4. 【转】java获取当前路径的几种方法
  5. python 中类与对象
  6. [ZZ]HOW TO:使用 Visual Studio .NET 将 SQL Server 2000 存储过程添加到 Visual SourceSafe
  7. 2016年最值得关注的16个网页设计趋势
  8. Fort.js – 时尚、现代的进度提示效果
  9. 谷歌有情怀!谷歌开放大规模音频数据集 AudioSet
  10. SVM分类器(matlab)