在C++ 中可以定义“引用”。定义方式如下: 类型名 &引用名 = 同类型的某变量名; 此种写法就定义了一个某种类型的引用,并将其初始化为引用某个同类型的变量。

定义:引用:就是变量的一个别名。

注:作为别名来说,一个变量不能只有别名,而没有自己的真实姓名。

基本数据类型的引用

如下面的一段代码:

实例

#include
using namespace std;
{int a = 3;int &b = a;  //b就是a的引用,即b是a的一个别别名。//引用必须初始化,否则编译会报错b = 10;cout<< a << endl; //此时a 的值,已由原来的3变成了10.因为我们无论对别名做什么操作,其实都是对变量的本身做操作。就像我们去交萝卜头去干什么,罗XX本身就去干什么。return 0;
}

结构体类型的引用

如下面的一段代码:

实例

#include
using namespace std;
//定义一个名叫Coor的结构体,这是一个坐标。
typedef struct
{int x;int y;
}Coor;int main(void)
{Coor c1;    //定义一个结构体变量,叫c1.Coor &c = c1;    //给c1起了一个别名叫c.c.x = 10;    //通过引用给结构体变量的数据成员赋值c.y = 20;cout<< c1.x << c2.y;    //输出的结果:10 20return 0;
}

指针类型的引用

指针类型的引用是引用当中最为复杂,最难理解的一部分,同时在写法形式上也有着与众不同的地方。

定义:

类型 *&指针引用名 = 指针;

看个例子:

实例

#include
using namespace std;int main(void)
{int a = 10;    //定义一个整型的a变量,a的值为10。int *p = &a; //定义一个指向a变量的指针int *&q = p;    //定义一个指针的引用,即q为p的别名。 定义方法:类型 *&指针引用名 = 指针;*q = 20;    //把20赋给*q,相当于是把20赋值给*p,也就相当于把20赋值给a.cout<< a << endl;    //输出a 的值为20.return 0;
}

引用作函数参数

在没有学习引用之前我们学习 C 语言时,学过这样的经典程序:

//将两个值进行交换
void fun( int *a,int *b) //形参为两个整型的指针变量
{int temp = 0;    //定义一个临时变量。良好的习惯是定义一个变量并初始化它;c = *a;    //将*a赋值给c;*a = *b;    //将*b赋值给*a;*b = c;    //再将c赋值给*b;这样就完成了a、b数值的交换
}int x = 10,y = 20;
fun(&x,&y); //在主函数中调用时,传过去的实参需要写成 取地址a,取地址b,比较麻烦,也不易理解。

现在我们学习了引用,在完成同等功能时需要写成什么样子?

实例

void fun (int &a, int &b)    //形参为两个整型的引用
{int temp = 0;temp = a;a = b;b = temp;
}int x = 10,y = 20;
fun(x,y);    //在主函数中调用时,实参传过去后a是x的别名,b是y的别名。

C++ 引用类型简介相关推荐

  1. Java四种引用类型

    文章目录 引用类型简介 对象可达性判断 GC Roots对象 可达性判断 可达性状态类型 可达性判断规则 状态转换 Reference 类定义 状态变化 四种引用类型实现 强引用FinalRefere ...

  2. Java的四种引用类型

    文章目录 一文读懂java中的Reference和引用类型 简介 强引用Strong Reference 软引用Soft Reference 弱引用weak Reference 虚引用PhantomR ...

  3. [读书笔记]C#学习笔记三: C#类型详解..

    前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...

  4. C#免费教程(bili网站搜罗VSTO免费视频资源)

    在bilibili网站搜索关键字"C#"后,搜索结果如下图所示,搜索结果比搜索VSTO的资源多了太多了,足有50页之多. 哪个更好呢?经过笔者的梳理,以下几个值得推荐. 1 C#语 ...

  5. android开发 listview 头部 轮播,listview添加的头部布局超过一屏头部内容显示不全...

    headView的实际高度超过一个屏幕,但是显示的结果只有一个屏幕,超过一个屏幕高度意外的部分显示不全. 只使用了listView.getRefreshable().addHeadView(headV ...

  6. 《面试宝典》:检验是否为合格的初中级程序员的面试知识点,你都知道了吗?查漏补缺

    欢迎关注文章系列,一起学习 <提升能力,涨薪可待篇> <面试知识,工作可待篇> <实战演练,拒绝996篇> 也欢迎关注公 众 号[Ccww技术博客],原创技术文章第 ...

  7. C#程序设计语言Version2.0简介

    [翻译] lover_P 2004-01-26 ---------------------------------------------------------------------------- ...

  8. 【C++ 语言】引用 ( 引用简介 | 指针常量 | 常量指针 | 常引用 | 引用参数 | 引用 指针 对比 )

    文章目录 I . 引用概念 II . 引用声明 III . 引用 地址 内存 分析 IV . 常引用 V . 引用作为参数 VI . 引用 与 指针 对比 I . 引用概念 C++ 对 C 扩充 : ...

  9. 推荐JQuery学习简介

    "从零学习jQuery"系列教程收到了很多人喜欢, 也完成了一本介绍jQuery的书: "jQuery风暴" 在这里向大家郑重推荐这本书. 写书的时候jQuer ...

最新文章

  1. python爬虫反爬 对方是如何丧心病狂的通过css_如何应对网站反爬虫策略?如何高效地爬大量数据?...
  2. CentOS 6.9安装配置nmon
  3. python legend位置_关于matplotlib-legend 位置属性 loc 使用说明
  4. 【数据结构与算法】字符串匹配 BF算法 RK算法
  5. js setTimeout 使用方法
  6. commons-pool2-2.3 jar包_[漏洞复现]FastJson 1.2.61远程代码执行漏洞(From第三方jar包)
  7. 学习Python技术,怎么才能更好找到工作
  8. HTTP协议基本原理简介(二)
  9. 清华山维eps软件_cass3D三维立体数据采集软件
  10. 游戏出海成为全球化趋势
  11. 计算机学情分析万能模板,计算机教学计划5篇精选范文总结大全
  12. FPGA与ASIC区别
  13. java取当前北京时间_用Java取指定时区的时间 北京时间,纽约时间,班加罗尔时间...
  14. 网易美学-系统架构系列1-分布式与服务化
  15. 网络其他计算机无法访问,win7局域网别人无法访问我的电脑是为什么_win7其他电脑无法访问我的电脑如何修复-win7之家...
  16. C语言基本语法——循环篇(三种常见的循环)
  17. 人脸识别(识别程序)
  18. 概率论与数理统计(3.4) 相互独立的随机变量
  19. 三星 android 模拟器,三星Galaxy Tab模拟器
  20. vue element el-date-picker绑定对象 v-model=‘xx.xx‘清空后数据还是显示

热门文章

  1. 5个有趣的Python小知识,返回结果让人出乎意料~
  2. 太鸡冻了!我用 Python 偷偷查到暗恋女生的名字
  3. 美多商城之验证码(图形验证码)
  4. 人工智能及其应用(第5版).蔡自兴-1-5章课后习题。【部分无答案】
  5. 硬肝!超详细matplotlib基础介绍!!!
  6. 亚马逊:用CNN进行图像分类的Tricks
  7. 一份火爆国外的PyCharm快捷键和Python代码速查表
  8. Facebook开源高效图像Transformer,速度、准确率与泛化性能媲美SOTA CNN
  9. 使用Mask-RCNN在实例分割应用中克服过拟合
  10. [转] 先验概率and后验概率