C++中的引用常见用法
1.引用的内涵
引用就是给变量取外号而已。
2.四种不能使用引用的情况
void &r=x; //不能建立void类型引用
int &&r=x; //不能建立引用的引用
int &*p=x; //不能建立指向引用的指针,但是可以建立指向指针的引用
int &ra[]=a; //不能建立引用的数组
总结:引用一有三无:有类型,无引用,无指针,无数组
3.引用的最基本用法
#include<iostream>
using namespace std;
int x=,y=;
int &r=x;
void print()
{
cout<<"x="<<x<<" y=<<y<<" r="<<endl;
cout<<"Address of x "<<&x<<endl;
cout<<"Address of y "<<&y<<endl;
cout<<"Address of z "<<&z<<endl;
}
int main()
{
print();
r=y; y=;
print();
x=;
print();
return ;
}
运行结果如下:
x= y= r=
Address of x 00474DD0
Address of y 00474DD4
Address of r 00474DD0
x= y= r=
Address of x 00474DD0
Address of y 00474DD4
Address of r 00474DD0
x= y= r=
Address of x 00474DD0
Address of y 00474DD4
Address of r 00474DD0
总结:修改作用,引用==原变量
4.引用作为形参
引用作形参,系统不为其另分配内存空间,与原变量公用内存空间。
调用函数才初始化。
#include <iostream>
using namespace std;
void swap(int &x,int &y)
{
int t=x;
x=y;
y=t;
}
int main()
{
int a=,b=,c=,d=;
cout<<"a="<<a<<" b="<<b<<endl;
swap(a,b);
cout<<"a="<<a<<" b="<<b<<endl;
cout<<"c="<<c<<" d="<<d<<endl;
swap(c,d);
cout<<"c="<<c<<" d="<<d<<endl;
return ;
}
RESULT:
a=3 b=5
a=5 b=3
c=10 d=20
c=20 d=10
原文来自饼神的博客:http://my.oschina.net/zqmath1994/blog/506840
C++中的引用常见用法的更多相关文章
- Guava中Predicate的常见用法
Guava中Predicate的常见用法 1. Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...
- JAVA中enum的常见用法
JAVA中enum的常见用法包括:定义并添加方法.switch.遍历.EnumSet.EnumMap 1.定义enum并添加或覆盖方法 public Interface Behaviour{ void ...
- (转)轻松掌握shell编程中数组的常见用法及示例
缘起:在老男孩进行linux培训shell编程教学中,发现不少水平不错的网友及同学对数组仍然很迷糊,下面就给大家分享下数组的用法小例子,希望能给大家一点帮助.其实SHELL的数组很简单,好用.我们学习 ...
- Java中枚举的常见用法
在JDK1.5以后引入了一种新的类型,就是枚举(enum).enum是用来声明枚举类型数据,它可以像数组一样存储许多的元素,但是不同于数组的是,它除了数字不能存储以外, 其他类型的如字母.特殊符号.汉 ...
- Objective-C中#define的常见用法
参考博客 http://blog.csdn.net/kindazrael/article/details/8108868 在C语言中,预处理代码是非常强大的工具,能让代码变得可读性和可维护性更强.预处 ...
- 转:VC中MessageBox的常见用法
一.关于MessageBox 消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合. 1.MessageBox("这是一个最简单的 ...
- VC中MessageBox的常见用法
一.关于MessageBox 消息框是个很常用的控件,属性比较多,本文列出了它的一些常用方法,及指出了它的一些应用场合. 1.MessageBox("这是一个最简单的 ...
- K:java中枚举的常见用法
用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.....现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法. ...
- Objective-C中Block的常见用法
typedef int(^AddValue)(int,int); int main(int argc, const char * argv[]) { @autoreleasepool { //1:NS ...
随机推荐
- Django 创建模型 激活模型 简单的使用模型
创建模型: 在你的开发环境中,已经有一个“项目” —— 已经建立起来,你将开始在上面做一些东西. 你编写的每个Django应用都是一个遵循特定约定的Python包. Django自带一个工具,它可以自 ...
- ADF系列-3.VO的查询
一·VO的计数查询 VO的计数查询有四种方式: 1.ViewObjectImpl::getRowCount() 这个方法从数据库中提取所有行,然后对每一行计数, 得到总行数.如果行数很大,这会影响性能 ...
- CF587F Duff is Mad
题目 有趣的思想 首先暴力的话,自然是对每一个询问在\(AC\)自动机上跑一遍\(k\),看看跑出来的节点在\(fail\)树到根的路径上有多少个\(l\)到\(r\)之间的结束标记就好了 我们发现无 ...
- 把list(对象)集合中的(某个属性),放到数组中。
List<SpecialguardInfo> list=specialguardOrderService.findfreeSg(date1,date2);//得到list对象集合 Stri ...
- OC报错,after command failed: Directory not empty
Directory not empty这个错误经常出现,出现的原因也很多,今天主要记录一下楼主自己碰到的这种情况. 全部错误提示: error: couldn't remove ‘路径/app-fzy ...
- java线程安全单例
public class MySingleton { // 使用volatile关键字保其可见性 volatile private static MySingleton instance = null ...
- openmax component类的继承关系
向OpenCORE里继承一个新的codec时,需要用到OpenMAX接口规范对该codec进行封装,即要定义一个用于封装的类(wrapper),实现OpenMAX规定的集中核心方法(omx core ...
- OC录制小视频
OC录制小视频 用 AVCaptureSession + AVCaptureMovieFileOutput 来录制视频,并通过AVAssetExportSeeion 手段来压缩视频并转换为 MP4 格 ...
- 我的前端工具集(八)获得html元素在页面中的位置
我的前端工具集(八)获得html元素在页面中的位置 liuyuhang原创,未经允许禁止转载 目录 我的前端工具集 有时候需要用点击等操作,来获取某元素在页面中的位置,然后在该位置添加某些操作 如 ...
- UIDynamic-吸附-重力-碰撞-物理仿真动画
现实生活中: 运动场==物理仿真器 跑步==物理仿真行为 人==仿真元素 创建步骤: 1.创建物理仿真器,并且指定仿真范围 2.创建物理仿真行为,并且指定仿真元素 3.将物理仿真行为添加到仿真器中 D ...