C++入门经典-例5.16-输出引用
1:如不加特殊说明,一般认为引用指的都是左值引用。引用实际上是一种隐式指针,它为对象建立一个别名,通过操作符&来实现,引用的形式如下:
数据类型 & 表达式;
例如:
int a=10;
int & ia=a;
ia=2;
上面的程序定义了一个引用变量ia,它是变量名a的别名,对ia的操作与对a的操作完全一样。“ia=2”把2赋给a,“&ia”返回a的地址。执行“ia=2”和执行“a=2”等价。
使用引用的说明如下:
(1)一个C++引用被初始化后,无法使用它再去引用另一个对象,它不能被重新约束。
(2)引用变量只是其他对象的别名,对它的操作与原来对象的操作具有相同作用。
(3)指针变量与引用主要区别有两点:一是指针是一种数据类型,而引用不是一个数据类型,指针可以转换为它所指向变量的数据类型,以便使赋值运算符两边的类型相匹配;而使用引用时,系统要求引用和变量的数据类型必须相同,否则不能进行数据类型转换。二是指针变量和引用变量都用来指向其它变量,但指针变量使用的语法要复杂一些;定义引用变量后,其使用方法和普通变来那个相同。
例如:
int a;
int *pa=&a;
int & ia=a;
示例代码如下:
// 5.16.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
using namespace std;
void main()
{
int a;
int & ref_a = a;
a = ;
cout << "a= " << a << endl;
cout << "ref_a=" << ref_a << endl;
a = ;
cout << "a= " << a << endl;
cout << "ref_a=" << ref_a << endl;
int b = ;
ref_a = b;
cout << "a= " << a << endl;
cout << "ref_a=" << ref_a << endl;
ref_a--;
cout << "a= " << a << endl;
cout << "ref_a=" << ref_a << endl;
}
运行结果:
C++入门经典-例5.16-输出引用的更多相关文章
- C++入门经典-例5.20-右值引用传递参数
1:使用字面值(如1.3.15f.true),或者表达式等临时变量作为函数实参传递时,按左值引用传递参数会被编译器阻止.而进行值传递时,将产生一个和参数同等大小的副本.C++11提供了右值引用传递参数 ...
- C++入门经典-例5.18-通过引用交换数值
1:在C++中,函数参数的传递方式主要有两种,即值传递和引用传递.值传递是指在函数调用时,将实际参数的值赋值一份传递到调用函数中,这样如果在调用函数中修改了参数的值,其改变将不会影响到实际参数的值.而 ...
- C++入门经典-例5.17-右值引用的定义
1:右值引用的定义: 类型 && i=被引用的对象: 左值与右值的区别在于,右值是临时变量,例如,函数的返回值,并且无法被改变. 当右值引用被初始化后,临时变量消失. 代码如下: // ...
- C++入门经典-例2.11-流输出小数控制
1:代码如下: // 2.11.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...
- C++入门经典-例6.12-使用数组地址将二维数组输出
1:以a[4][3]为例 a代表二维数组的地址,通过指针运算符可以获取数组中的元素 (1)a+n代表第n行的首地址 (2)&a[0][0]既可以看作第0行0列的首地址,同样也可以被看作是二维数 ...
- C++入门经典-例5.19-指针的引用与传递参数
1:引用传递参数与指针传递参数能达到同样的目的.指针传递参数也属于一种值传递,其传递的是指针变量的副本.如果使用指针的引用,就可以达到在函数体内改变指针地址的目的.运行代码如下: // 5.19.cp ...
- C++入门经典-例2.10-控制输出精确度
1:代码如下: // 2.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...
- C++入门经典-例3.25-使用循环输出闰年
1:代码如下: // 3.25.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> usin ...
- C++入门经典-例3.23-使用嵌套循环输出乘法口诀表
1:代码如下: // 3.23.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iomanip> #incl ...
随机推荐
- 操作系统(五)CPU调度
CPU调度是多道程序操作系统的基础.
- Select2的远程数据操作
一.概述 如果下拉列表框中的内容太多,最好是使用Select2的远程数据进行筛选. 二.参考文献 https://select2.github.io/examples.html#data-ajax h ...
- SQL----Scalar 函数
UCASE() 函数 UCASE 函数把字段的值转换为大写. SQL UCASE() 语法 SELECT UCASE(column_name) FROM table_name SQL UCASE() ...
- Linux(16):Shell编程(3)
vim 编程环境配置: .vimrc 文件配置如下:(.vimrc文件放到家目录下:/root :然后退出 xshell 再登陆进来xshell) set nocompatible set histo ...
- JSP和JSTL视图解析器
使用JSTL users.jsp <%@ page language="java" contentType="text/html; charset=UTF-8&qu ...
- Python爬虫 Selenium与PhantomJS
Selenium Selenium是一个Web的自动化测试工具,最初是为网站自动化测试而开发的,最初是为网站自动化测试而开发的,类型像我们玩游戏用的按键精灵,可以按指定的命令自动化操作,不同是Sele ...
- 部署etcd集群
部署etcd集群 第一步:先拉取etcd二进制压缩包 wget https://github.com/coreos/etcd/releases/download/v3.3.2/etcd-v3.3.2- ...
- Javascript问题集锦
1.Date.parse()函数兼容性问题: IE Chrome Firefox Date.parse("07-17-2019") 1563292800000 15632928 ...
- 记一次部署PHP遇到的编码问题故障
php开发给我项目和数据库,我按正常部署流程部署,开始发现之梦的后台登陆不了,后发现是属主属组不对,代码直接解压后是root的,更改后,后台能登陆,但部分显示乱码.后将正常的数据库文件重新导入后,显示 ...
- 百度网盘,FTP上传异常、上传失败的解决办法
若你的宽带上传上限速度为50KB,那么将百度网盘或FTP的上行速度调为50KB以下即可,就不会出现网络异常的情况了.