
正文
【C/C++】引用&的含义/语法/作为函数参数/函数返回值/本质/常量引用
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
含义
引用不产生副本,只是给原变量起了别名。
对引用变量的操作就是对原变量的操作。基本语法
数据类型 &别名 = 原名
e.g.
int a = 10;
int &b = a; //引用必须要初始化,一旦初始化后不可以更改:因为本指是指针常量,不可以修改指针的指向
可以通过赋值修改:
int main()
{
int a = 10;
int &b = a;
int c = 20;
b = c; //可以赋值,但是不能更改引用
cout << "a" << a << endl;
cout << "b" << b << endl;
system("pause");
}

发现更改了引用b的值之后,a的值也跟着改变了。
对引用变量的操作就是对原变量的操作。
引用作为函数参数
作用:传参让形参修饰实参
优点:简化指针修改实参。void test01(&a)引用作为函数返回值
#include <iostream>
using namespace std;//返回局部变量引用
int& test01()
{
int a = 10; //局部变量存放在 栈区
return a;
}//函数调用可以作为左值,调用完后返回a的引用。
//左值必须为可修改的值
int& test02()
{
static int a = 10; //静态变量,存放在全局区,全局区数据在程序结束后系统释放
return a;
}int main()
{
// 不能返回局部变量的引用
// int &ref = test01();
// cout << ref << endl; int &ref2 = test02();
cout << ref2 << endl; test02() = 1000; //如果函数的返回值是引用,这个函数调用可作为左值,因为引用相当于返回了变量,可以被修改
cout << ref2 << endl; system("pause");
}
- 引用的本质
在C++内部实现一个指针常量。
指针常量:指针的指向不可以修改,指针指向的地址的内存中的值可以修改。
//发现是引用,转换为 int* const ref = &a;
void func(int& ref)
{
ref = 100; // ref是引用,转换为*ref = 100
}
int main()
{
int a = 10; //自动转换为 int* const ref = &a; 创建引用相当于创建了一个指针常量:指针的**指向固定**
int& ref = a; ref = 20; //内部发现ref是引用,自动转换为:*ref = 20; func(a);
}
- 常量引用
作用:修饰形参,防止误操作
#include <iostream>
using namespace std;//打印数据函数
void showValue (const int& val)
{
//作用2: 防止误操作
//val = 1000; 报错,不能修改
cout << val << endl;
}int main()
{
//常量引用
//使用场景:用来修饰形参,防止误操作//作用1: 直接赋值(常值)
//加上const之后 编译器将代码修改 int temp = 10; const int &ref = temp;
//int& ref = 10; 报错,引用必须引一块合法的内存空间
const int& ref = 10;
//ref = 20; 报错,加入const之后变为只读,不可以修改 int a = 100;
showValue(a);
cout << a << endl; system("pause");
}
【C/C++】引用&的含义/语法/作为函数参数/函数返回值/本质/常量引用的更多相关文章- python函数进阶(函数参数、返回值、递归函数)
函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形 ...
- JS基础语法---函数---介绍、定义、函数参数、返回值
函数: 把一坨重复的代码封装,在需要的时候直接调用即可 函数的作用: 代码的重用 函数需要先定义,然后才能使用 函数名字:要遵循驼峰命名法 函数一旦重名,后面的会把前面的函数覆盖 Ctrl +鼠标左键 ...
- Python基础之函数参数与返回值进阶
参数作用:如果外界希望在函数内部处理数据,就可以将数据作为参数传入函数内部: 返回值作用:如果希望一个函数函数执行完成后,向外界报告函数的执行结果,就可以使用函数的返回值. 函数的返回值 进阶 利用元 ...
- javascript函数参数、返回值类型检查
实现带参数.返回值类型声明的js函数: 类型定义:window.Str = Type.Str = Type.define('STRING', Type.isStr);var Per = Type.de ...
- 04 python学习笔记-函数、函数参数和返回值(四)
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print(),我们也可以自己创建函数,这叫做用户自定 ...
- Java中能否利用函数参数来返回值
转自https://blog.csdn.net/da_da_xiong/article/details/70039532 我们在写代码时通常会遇到一种情况,就是我们可能希望在一个函数操作完成后返回两个 ...
- c++函数参数或返回值为函数指针
C++中函数指针的形式为:返回值类型 + 参数类型,函数没有值类型,但是却可以声明函数的指针,因为函数是可寻址的,存放在内存中的代码段,可以从指针访问. 函数指针可以声明为: void (*pF)(v ...
- ajax中error函数参数与返回值详解 200 300 400 500
201-206:都表示服务器成功处理了请求的状态代码,说明网页可以正常访问. 200:(成功) 服务器已成功处理了请求.通常,这表示服务器提供了请求的网页. 201:(已创建) 请求成功且服务器已创建 ...
- python中函数的参数和返回值
目录 函数 目标 01. 函数参数和返回值的作用 1.1 无参数,无返回值 1.2 无参数,有返回值 1.3 有参数,无返回值 1.4 有参数,有返回值 02. 函数的返回值 进阶 示例 -- 温度和 ...
随机推荐- Android调用基于.net的WebService
在实际开发项目中,有时候会为Android开发团队提供一些接口,一般是以asmx文件的方式来承载.而公布出去的数据一般上都是标准的json数据.但是在实际过程中,发现Android团队那边并不是通过将 ...
- Android图片压缩方法总结
本文总结Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法.比例压缩法(根据路径获取图片并压缩)和比例压缩法(根据Bitmap图片压缩). 第一:质量压缩方法: ? 1 2 3 ...
- PHP中使用kindeditor
KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE.Firefox.Chrome. Safari.Opera等主流浏览器.KindEditor ...
- wps批量使标题靠文档左边
- #define XBYTE ((unsigned char volatile xdata *) 0)
今天在看别人的CAN总线程序的时候,突然发现了这么一句宏定义:#define XBYTE ((unsigned char volatile xdata *) 0),以前都没注意到过.后来查了一下,发现 ...
- scrollify - 滚动条方式的全屏滚动
jQuery Scrollify Version Beta v1.0.5 Date:2017-04-25 23:45 源代码 (function($, window, document) { 'use ...
- Codeforces Round #544 (Div. 3) (补)
D:没有注意到a==0&&b==0的情况,把自己卡崩了.对于数学公式推导一定要注意关于0的特殊情况,不可以少 #include <iostream> #include &l ...
- 大数据入门第二十一天——scala入门(一)并发编程Actor
注:我们现在学的Scala Actor是scala 2.10.x版本及以前版本的Actor. Scala在2.11.x版本中将Akka加入其中,作为其默认的Actor,老版本的Actor已经废弃 一. ...
- Java编程思想学习笔记——初始化与清理
初始化 构造器保证初始化 构造器采用与类相同的名称. 默认构造器(default constructor):不接受任何参数的构造器,也叫无参构造器. 构造器也能带有形式参数,就能在初始化对象时提供实际 ...
- DBA-常用到的动态视图分析语句
--语句1:获取前20逻辑读取次数或逻辑写入次数或CPU 时间 ), ((CASE qs.statement_end_offset THEN DATALENGTH(qt.TEXT) ELSE qs.s ...
函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形 ...
函数: 把一坨重复的代码封装,在需要的时候直接调用即可 函数的作用: 代码的重用 函数需要先定义,然后才能使用 函数名字:要遵循驼峰命名法 函数一旦重名,后面的会把前面的函数覆盖 Ctrl +鼠标左键 ...
参数作用:如果外界希望在函数内部处理数据,就可以将数据作为参数传入函数内部: 返回值作用:如果希望一个函数函数执行完成后,向外界报告函数的执行结果,就可以使用函数的返回值. 函数的返回值 进阶 利用元 ...
实现带参数.返回值类型声明的js函数: 类型定义:window.Str = Type.Str = Type.define('STRING', Type.isStr);var Per = Type.de ...
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率.Python提供了许多内建函数,比如print(),我们也可以自己创建函数,这叫做用户自定 ...
转自https://blog.csdn.net/da_da_xiong/article/details/70039532 我们在写代码时通常会遇到一种情况,就是我们可能希望在一个函数操作完成后返回两个 ...
C++中函数指针的形式为:返回值类型 + 参数类型,函数没有值类型,但是却可以声明函数的指针,因为函数是可寻址的,存放在内存中的代码段,可以从指针访问. 函数指针可以声明为: void (*pF)(v ...
201-206:都表示服务器成功处理了请求的状态代码,说明网页可以正常访问. 200:(成功) 服务器已成功处理了请求.通常,这表示服务器提供了请求的网页. 201:(已创建) 请求成功且服务器已创建 ...
目录 函数 目标 01. 函数参数和返回值的作用 1.1 无参数,无返回值 1.2 无参数,有返回值 1.3 有参数,无返回值 1.4 有参数,有返回值 02. 函数的返回值 进阶 示例 -- 温度和 ...
- Android调用基于.net的WebService
在实际开发项目中,有时候会为Android开发团队提供一些接口,一般是以asmx文件的方式来承载.而公布出去的数据一般上都是标准的json数据.但是在实际过程中,发现Android团队那边并不是通过将 ...
- Android图片压缩方法总结
本文总结Android应用开发中三种常见的图片压缩方法,分别是:质量压缩法.比例压缩法(根据路径获取图片并压缩)和比例压缩法(根据Bitmap图片压缩). 第一:质量压缩方法: ? 1 2 3 ...
- PHP中使用kindeditor
KindEditor是一套开源的HTML可视化编辑器,主要用于让用户在网站上获得所见即所得编辑效果,兼容IE.Firefox.Chrome. Safari.Opera等主流浏览器.KindEditor ...
- wps批量使标题靠文档左边
- #define XBYTE ((unsigned char volatile xdata *) 0)
今天在看别人的CAN总线程序的时候,突然发现了这么一句宏定义:#define XBYTE ((unsigned char volatile xdata *) 0),以前都没注意到过.后来查了一下,发现 ...
- scrollify - 滚动条方式的全屏滚动
jQuery Scrollify Version Beta v1.0.5 Date:2017-04-25 23:45 源代码 (function($, window, document) { 'use ...
- Codeforces Round #544 (Div. 3) (补)
D:没有注意到a==0&&b==0的情况,把自己卡崩了.对于数学公式推导一定要注意关于0的特殊情况,不可以少 #include <iostream> #include &l ...
- 大数据入门第二十一天——scala入门(一)并发编程Actor
注:我们现在学的Scala Actor是scala 2.10.x版本及以前版本的Actor. Scala在2.11.x版本中将Akka加入其中,作为其默认的Actor,老版本的Actor已经废弃 一. ...
- Java编程思想学习笔记——初始化与清理
初始化 构造器保证初始化 构造器采用与类相同的名称. 默认构造器(default constructor):不接受任何参数的构造器,也叫无参构造器. 构造器也能带有形式参数,就能在初始化对象时提供实际 ...
- DBA-常用到的动态视图分析语句
--语句1:获取前20逻辑读取次数或逻辑写入次数或CPU 时间 ), ((CASE qs.statement_end_offset THEN DATALENGTH(qt.TEXT) ELSE qs.s ...








