引用变量一
来源:互联网 发布:起点源码 编辑:程序博客网 时间:2024/05/29 02:30
c++新增了一个复合类型-引用变量。引用是已经定义的变量的别名(另一个名称)。引用的主要用途是用作函数的形参,通过将引用变量用作参数,函数将使用原始数据,而不是其副本。
1.创建引用变量
c和c++使用&符号来表示变量的地址,c++给&符号赋予了另一个含义,将其用来声明引用变量。例如,将rodents用作变量rats的别名,可以这样做:
int rats;int & rodents=rats;
其中,int & 指的是指向int的引用,上述声明将rats和rodents互换,他们指向的是同一个地址处的同一个变量。
2.引用的初始化
必须在声明引用时将其初始化,而不能像指针一样,先声明,再赋值。例如,
int rats;int & rodents;rodents=rats; //invalid不合法
3.将引用用作函数参数
引用常被用作函数参数,使得函数中的参数成为调用程序中变量的别名,这种传递参数的方式叫做按引用传递。这是c++新增的特性,是对c语言的超越。下面是一个简单地交换两个变量值的程序:
#include <iostream>using namespace std;void swapr(double & x,double & y);int main(){ double a,b; cout<<"输入两个数:\n"; cin>>a>>b; cout<<"a= "<<a<<","<<"b= "<<b<<endl; cout<<"交换两个数:\n"; swapr(a,b); cout<<"Now,a= "<<a<<","<<"b= "<<b<<endl; return 0;}void swapr(double & x,double & y){ double temp; temp=x; x=y; y=temp;}
结果
4.引用的属性和特别之处
1.例如以下函数:
double cube(double & a){ a*=a*a; return a;}
输入x=3;则程序运行的结果为27=cube(x);但是注意的是此时,x的值也是27,我们的本意是不修改x的值,如果是按值传递,那么x的值还是3,我们运用的是x的副本。
如果,程序员的意图是让函数使用传递给它的信息,而不对这些信息进行修改,同时又想使用引用,则应使用常量引用。即在此函数中,函数头和函数原型中使用const:double cube(const double & a)。这样做编译器一旦发现代码修改了a的值,将生成错误信息。
2.临时变量、引用参数和const
如果实参和引用参数不匹配,c++将生成临时变量,并让引用指向这个临时变量,当前仅当引用参数为const引用时,c++才会这样做。
- 什么时候生成临时变量?①实参的类型正确,但不是左值;②实参的类型不正确,但可以转换为正确的类型。
总之,应尽可能地使用const引用。
阅读全文
0 0
- 引用变量一
- shell脚本(一):变量的引用
- php 定义和引用变量 (一)
- 变量引用
- 引用变量
- 引用变量
- 引用变量
- 引用变量
- 引用变量
- 引用变量
- 变量引用
- 引用变量
- [教程]JScript中的变量引用规则(一)
- [教程]JScript中的变量引用规则(一)
- [教程]JScript中的变量引用规则(一)
- 函数探幽(一)——内联函数,引用变量
- (一〇三)引用变量及相关(万字长文)
- 引用变量和引用数组
- MyEclipse 使用gradle 构建java web项目
- Android 进阶学习笔记-----序列化和反序列化的理解
- SQL 已更新或删除的行值要么不能使该行成为唯一行(sqlserver中有多行所有的列重复的数据,无法更新或删除问题)
- JSP九大内置对象和四种属性范围解读
- nacicat 连接服务器mysql数据库
- 引用变量一
- CSS 定位posistion,absolute,relative,float,clear最简单明了的解释
- laravel 5.* 打印输出最后执行一条sql
- 有向图中以一个顶点为起始点的所有路径
- 悬镜安全实验室Kr0iNg获网易SRC 7月份贡献榜第一,企业安全服务交给我们更放心
- 分享一个基于 appium 的 UI 自动化测试,想知道大家的 UI 自动化都是怎么做的
- Jmeter之参数化
- 算法设计与分析 整数划分的递归实现算法
- HDU1051 Wooden Sticks(贪心)