引用:给变量起别名

  1. 语法数据类型 &别名 = 原名;//必须初始化为合法的内存空间,即原名必须为变量,不能为常量

  2. 引用本质本质是指针,具体来说是在c++内部的实现是一个指针常量,其指向不可更改,其指向的值可以更改
    int &a = b;
    int * const a = &b;
    上述两个表达式等价,在c++中编译器会自动把第一行改为第二行直接进行运行,指针部分的工作有编译器全部代劳。因此可以起到简化的作用。

  3. 注意事项
    引用必须要初始化;
    引用一旦初始化后就不可以改变:不可以改为别的变量的别名,相当于是可以改变引用变量的值(相当于是赋值操作),但是引用的对象不可变

  4. 引用做函数参数:简化使用指针来改变实参
    参数的传递方式:值传递(形参不能修饰实参),地址传递(形参可以修饰实参),引用传递(形参可以修饰实参)。

//三种参数传递的对比:
//值传递
void swap1(int a,int b){int tmp = a;a = b;b = tmp;
}
//地址传递(指针方式传递参数)
void swap2(int *a, int *b){int tmp =*a;*a = *b;*b = tmp;
}
//引用传递
void swap3(int &a,int &b){int tmp = a;a = b;b = tmp;
}
int main(){int a = 10;int b = 20;swap1(a,b);//形参不可以修饰实参cout<<a<<b<<endl;//输出结果为a = 10;b = 20;swap2(&a,&b);//形参可以修饰实参,指针还需要解引用cout<<a<<b<<endl;//输出结果为a = 20;b = 10;swap3(a,b);//形参可以修饰实参,引用可以直接交换,简化了指针方式传递参数cout<<a<<b<<endl;//输出结果为a = 20 ;b =10;
}
  1. 引用作为函数的返回值
    不可以返回局部变量的引用(栈中保存的变量),会出错;
    当返回值是引用时,函数调用可以作为左值,函数的调用就相当于是引用,对其进行更改相当于更改引用。

  2. 常量引用:用const来修饰引用,其指向的值是不可更改的。常常用来修饰形参,防止误操作。
    比如:void func(const int &a);这样在函数func中a的值无法再更改,也不会造成实参改变。

总结易混名称:

//易混名称:常量引用,指针常量,常量指针:
//区分方法:后两个字是什么表示本质是什么,落脚在常量,表示值无法更改,落脚在引用或是指针,表示指向无法更改;常量两个字在哪里,表示const的位置在哪里,同时也表示不可更改的是什么
int a = 10;
const int& b = a;//常量引用,指向无法更改,指向值可以更改
int * const c = &a;//指针常量,指向可以更改,指向值无法更改
const int* d = &a;//常量指针,指向无法更改,指向值可以更改

C++:引用及其用法相关推荐

  1. const修饰指针和引用的用法【转贴】

    *************************************************** 更多精彩,欢迎进入:http://shop115376623.taobao.com ****** ...

  2. [Excel]Excel函数和用法(1)——绝对引用“$“的用法

    [Excel]Excel函数和用法(1)--绝对引用"$"的用法 如果我们希望公式拖拽的时候,横向拖拽的时候列号不自动增加,在列名前加 , 如 果 我 们 希 望 行 号 不 自 ...

  3. C++重点之“引用变量”用法

    学习目标: 掌握引用变量的用法及其本质 学习内容: 1.引用的概念 引用是已定义的变量的别名(另一个名称),两者用法完全一样.同类理解  typedef 是给类型起别名. 2.声明与定义 一.基本数据 ...

  4. 函数式编程-Stream流/lambda表达式/Optional/函数式接口/方法引用/高级用法

    函数式编程-Stream流 不会Lambda表达式.函数式编程?你确定能看懂公司代码?-java8函数式编程(Lambda表达式,Optional,Stream流)从入门到精通-最通俗易懂 1. 概述 ...

  5. 关于Java中的引用的用法

    引用(reference) <-> 对象(object)/ 实例(instance) 1.Java中没有指针和地址的概念. 2. 认识对象的其中的一种视角 -> 组织管理数组的一个概 ...

  6. 引用的使用方法c语言,C语言中引用的用法

    引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样.引用的声明方法:类型标识符 &引用名=目标变量名:[例1]:int a; int &ra=a; //定义引用r ...

  7. [Excel]Excel函数和用法(1)——绝对引用$的用法

    如果我们希望公式拖拽的时候,横向拖拽的时候列号不自动增加,在列名前加$,如果我们希望行号不自动增加,在行号前面加$,比如: 我们再行号"1"前面加了$,然后拖拽之后,行号不变,所以 ...

  8. C# Microsoft.Office.Interop.Excel 引用的用法

    1)ApplicationClass ExcelApp = New ApplicationClass(); 2) 更改 Excel 标题栏:  ExcelApp.Caption := '应用 ...

  9. 关于c++中引用的基本用法

    文章目录 前言 一.引用基本用法 1.引用基本语法 2.引用注意事项 2.1 必须初始化 2.2 一旦初始化后不能更改 3.对数组建立引用 二.函数的引用 1.参数的传递 2.注意事项 2.1 引用必 ...

最新文章

  1. 23,148,855,308,184,500是一个神奇的数字,还是纯粹的机会?
  2. 081_html5地理定位
  3. mysql怎样循环插入数据_你向 Mysql 数据库插入 100w 条数据用了多久?
  4. 安卓巴士诚招版主,希望各位巴友踊跃加入我们!
  5. 数据抽取工具比对:Kettle、Datax、Sqoop、StreamSets
  6. Ext.Net 最新版(2011-06-24)License 问题
  7. [leetcode]62. 不同路径
  8. cli php 增强包_Linux 上安装 PHP 扩展
  9. SQLServer · 特性分析 · SQL Server 2012的分析函数未必都理解透了(2)
  10. getElementById和ByTagName的区别
  11. 物质为何能在虚空粒子海中存在
  12. matlab工作区显示的是什么,matlab工作区介绍
  13. java spy_Java Spy - 代码跟踪神器
  14. Going Deeper with Contextual CNN for Hyperspectral Image Classification
  15. 游戏建模次世代角色模型制作教程,内藏超级无敌干货!
  16. js html5 音乐播放器代码大全,js实现简单音乐播放器
  17. RT3070L无线网卡移植
  18. UNIX 是什么?怎么诞生的?
  19. 恢复出厂设置android手机号码,安卓手机恢复出厂设置会怎么样?
  20. 【C++实训】基于MVC模型开发的高校教务管理系统【附完整报告+示例程序+日记+源码】

热门文章

  1. 用汇编实现2进制到16进制 2进制到10进制转换并按要求输出
  2. 在Spring-boot使用easy-rules规则执行引擎
  3. 毕设分享 STM32单片机的智能手环 - 蓝牙手环 物联网
  4. 内网渗透代理、端口转发工具Termite
  5. python程序设计基础考试重点_python语言程序设计基础 复习整理 第1-3章
  6. 计算机在财务会计中的应用浅论,浅析excel在会计中的应用(实际应用版).pdf
  7. 互联网摸鱼日报(2022-09-21)
  8. Asix2 插件 错误 InvocationTargetException 解决办法
  9. MySQL基础入门【3】
  10. 关于pdfplumber和pdfminer不兼容的问题解决方案