什么是引用?

通俗来讲,引用就是起别名,如下面所示,给变量a起了个小名叫做 b, a和b都是这个变量所对应空间的名字,当修改任何一个时,另一个也会被修改。

int a = 10;
int & b = a;

引用和指针要进行区分,指针是需要开辟空间的,指针开辟的空间是为了存放一个变量对应的地址,而引用不需要开辟额外的空间,它只是这个变量的”小名“,这个变量还是放在原本的地方,起一个别名但是并不需要存放东西。

看下面这段代码,可以看到 b是a的引用,b的地址和a的地址相同,而c是指针,c的地址和a的不同,是为指针c开辟的一份空间。


引用的特性有哪些?

1、一个变量可以有多个引用
        2、 引用必须初始化
        3、 引用一旦初始化,不可再修改


常引用的注意事项:

引用的权限可以比变量本身小或者相等,但是绝不可以比变量本身大,否则就会出现问题。


引用作参数:

引用做参数的好处就是在传参时不需要拷贝,如果需要传的参数占用的空间特别大,直接传值作为参数,则需要拷贝一份,而如果选择传引用作参数,则不需要拷贝,只是给参数起别名,这样可以通过别名来修改。这点和传地址很相似,而传地址仍然是需要开辟空间。

void f1(int x)
{
}void f2(int* x)
{
}void f3(int& x)
{
}int main()
{int a = 10;f1(a);  //传值f2(&a); //传地址f3(a);  // 传引用
}

引用作返回值:

引用作返回值和一般的值做返回值时有区别的, 下面是对返回值的分析

刚刚提到了,局部变量会随着函数结束而销毁,因此函数中作引用返回值的变量,应该是全局变量或者静态变量。


关于引用的介绍和使用相关推荐

  1. php引用代码_PHP引用是什么?php中引用的介绍(代码实例)

    本篇文章给大家带来的内容是关于PHP引用是什么?php中引用的介绍(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 1. 什么是引用 在 PHP 中引用是指用不同的名字访问 ...

  2. html5英文参考文献,外文参考文献引用常识介绍

    外文参考文献引用常识介绍 不同的参考文献,引用和标注的格式要求是不一样的,特别是对于英文参考文献来说,格式不对,很容易影响整篇论文的质量和查重率,下面是小编整理的外文参考文献引用常识介绍,欢迎大家阅览 ...

  3. C++语言引用的介绍和示例

    对于习惯使用C进行开发的程序员来说,在看到C++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中,它除了取地址,还有其它的用途,叫做引用(reference) ...

  4. python介绍和用途-Python对象与引用的介绍

    对象 Python 中,一切皆对象.每个对象由:标识(identity).类型(type).value(值)组成. 1. 标识用于唯一标识对象,通常对应于对象在计算机内存地址.使用内置函数 id(ob ...

  5. android使用软引用构建缓存

    转自:http://www.devdiv.com/Android-%E4%BD%BF%E7%94%A8%E8%BD%AF%E5%BC%95%E7%94%A8%E6%9E%84%E5%BB%BA%E7% ...

  6. 使用Letax引用文献一直报错: LaTeX Error: Something‘s wrong--perhaps a missing \item

    这个问题困扰了我好久,最近终于下决心解决这个问题了,(之前就是直接将出错部分注释掉,很暴力). 首先大家如果对letax如何引用文献有问题,可以参考这篇博文:https://blog.csdn.net ...

  7. JVM之强引用、软引用、弱引用、虚引用

    JVM之强引用.软引用.弱引用.虚引用 整体架构 强引用Reference 软引用SoftReference 弱引用WeakReference 软引用和弱引用的适用场景 WeakHashMap案例演示 ...

  8. cab文件介绍及制作方法

    转自:http://bbs.pcpop.com/091030/5945399.html 1. 什么是cab文件 CAB在电脑上是一种压缩文件,微软出品的东西,用WinRAR可以解压缩,在DOS启动盘里 ...

  9. 彻底理解JVM常考题之分级引用模型

    转载自   彻底理解JVM常考题之分级引用模型 本文通过探析Java中的引用模型,分析比较强引用.软引用.弱引用.虚引用的概念及使用场景,知其然且知其所以然,希望给大家在实际开发实践.学习开源项目提供 ...

最新文章

  1. 点击空白处遮罩层关闭_如何手动关闭win10系统自带的windows defender
  2. (四)OpenStack---M版---双节点搭建---Glance安装和配置
  3. mysql 源代码学习 博客 [lock..]
  4. php 批量修改文件,php如何批量修改文件名
  5. 解决方案 | 阴阳师御用动画制作团队,丁磊的秘密武器
  6. 【选摘】如何提高月结事务的性能
  7. 反向Socket连接
  8. ES6结构赋值的用途
  9. Spring注解原理学习之@Size and @Pattern
  10. c++ 图的连通分量是什么_学习数据结构第五章:图(图的遍历操作)
  11. MS SQLService中的*= 及 =*
  12. c#操作ecxel的一些资源(downmoon搜集)
  13. network reactnative_从零学React Native之14 网络请求
  14. 计算机编程方面的电子书大汇总 阿里云盘
  15. 2018年中学计算机考试,重要!2018年济南市初中信息技术考试相关说明!
  16. 怎样看oracle删掉没有,肿么查看以前Oracle卸载干净没
  17. 第十周、第十一周学习总结
  18. android编译找不到系统so,Android找不到so库解决方法
  19. android FM的流程
  20. ZORRO佐罗软件安装教程及一键新机使用方法详细简介

热门文章

  1. 阿里,百度高级程序员力荐2019必看书单—附PDF电子档
  2. 计算机的关闭程序,电脑中取消关机时强制关闭程序提醒的方法
  3. 推荐10款简单好用的免费内网穿透工具
  4. IDEA修改Git仓库远端地址,处理服务器ip发生变化的情况
  5. V-Rep/CoppeliaSim:Steeringwheel_Tutorial手把手教你制作舵轮底盘
  6. 信息流广告文案与创意设计
  7. Pod 污点和容忍度
  8. (div,p)等标签之间“分割线”的两种实现方式
  9. 健康数据的获取 Iphone
  10. GTA5 无法登陆,无法创建登陆令牌问题解决