c++引用(REFERENCES)
一个例子
void add(int value)
{
value++;
}
int main()
{
int a = 5;
LOG(a);
add(a);
LOG( a);
}
在这种情况下,变量a在函数内进行自加运算,最后的结果仍然是两个5.

因为函数add的value实际上是传值引用,即value只是拷贝了a的数据,并没有影响a。
显而易见的,我们可以更改add函数使其有返回值,使得a等于这个返回值。
int add(int value)
{
return value++;
}
int main
{
int a =5;
a=add(a);
}
更方便的,我们可以使用传址引用,即传递变量的地址,让函数内value直接对地址上的数据操作。
void add(int& value)
{
value++;
}
其余什么都不需要改变
在这里,int& value中value就是a,因为两者地址一致,所指代的都为一个值。
还有别的方法
void add(int* value)
{
(*value)++;
}
在本例中,函数传入a的地址到指针value上,然后指针进行一次逆运算,得到地址的值,再进行自加运算,效果同上。
总结
实际可以看出,引用其实和指针是一个东西,是指针的语法糖,引用操作模式更加易理解
引用自创建被指向某一变量时就无法再次指向别的变量,我们只能改变他的值。
c++引用(REFERENCES)的更多相关文章
- (转) 学习C++ -> 引用( References )
学习C++ -> 引用( References ) 一.引用的介绍 引用就是某一变量(目标)的一个别名, 相当于同一个人有了两个名字, 无论喊哪一个名字实际上都是指的同一个人. 同样, 在 ...
- 超越 JSON: Spearal 序列化协议简介
Spearal 是一个新的开源的序列化协议,这个协议旨在初步替换JSON 将HTML和移动应用连接到Java的后端. Spearal的主要目的是提供一个序列协议,这个协议即使是在端点间传输的复杂的 ...
- java面试题总汇
coreJava部分 7 1.面向对象的特征有哪些方面? 7 2.作用域public,private,protected,以及不写时的区别? 7 3.String 是最基本的数据类型吗? 7 4.fl ...
- 重新介绍 JavaScript
简介 为什么需要这个重新介绍呢?因为 JavaScript 已经完全可以被称为世界上被误解最严重的编程语言了.虽然它被当做玩具来用,但是藏在让人迷惑的简单表象下面的,是强大的语言特性.从2005年,一 ...
- JavaScript的闭包和内存泄漏问题
闭包 http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html JavaScript中必须提到的功能最强大的抽象 ...
- oracle索引、 管理权限和角色
索引 1 单列索引create index 索引名 on 表名(列名): 2复合索引在同一张表上可以有多个索引,但是要求列的组合必须不同.create index 索引名 on 表名(列名1, 列名2 ...
- 编写高效的C程序与C代码优化
本文地址:http://www.cnblogs.com/archimedes/p/writing-efficient-c-and-code-optimization.html,转载请注明源地址. 说明 ...
- 《Velocity 模板使用指南》中文版[转]
转自:http://blog.csdn.net/javafound/archive/2007/05/14/1607931.aspx <Velocity 模板使用指南>中文版 源文见 htt ...
- JVM监控概述(图文)
JVM内存分配概述 Jvm 内存分为:堆.非堆及直接内存三大块. 堆区分为年轻代和老年代,永生代属于非堆内存. 对象优先在Eden区分配 大对象直接进入老年代 长期存活的对象将进入老年代 class. ...
- JS学习之路,菜鸟总结的注意事项及错误更正
JavaScript 是一种面向对象的动态语言,它的语法来源于 Java 和 C,所以这两种语言的许多语法特性同样适 用于 JavaScript.需要注意的一个主要区别是 JavaScript 不支持 ...
随机推荐
- 深入理解云计算OpenAPI体系
简介: 就云计算的API来看,当前并没有类似POSIX这样的API标准,基本上各大厂商各自为政.当然,有一些业界主流标准例如OAS获得多数云厂商的支持,但云厂商本身的API却往往由于历史原因.技术路 ...
- Pull or Push?监控系统如何选型
简介: 对于建设一套公司内部使用的监控系统平台,相对来说可选的方案还是非常多的,无论是用开源方案自建还是使用商业的SaaS化产品,都有比较多的可选项.但无论是开源方案还是商业的SaaS产品,真正实施 ...
- 2019-8-31-NuGet-如何设置图标
title author date CreateTime categories NuGet 如何设置图标 lindexi 2019-08-31 16:55:58 +0800 2019-4-27 17: ...
- 2018-3-8-WPF-UncommonField-类型是什么
title author date CreateTime categories WPF UncommonField 类型是什么 lindexi 2018-3-8 16:25:2 +0800 2018- ...
- STM32 USART串口通信
一.介绍 通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换.USART利用分数波特率发生器提供宽范围的波特率选择.它支持同步单向 ...
- Zeppelin未授权访问 getshell
Zeppelin未授权访问 getshell 1.漏洞简介 Apache Zeppelin是一个让交互式数据分析变得可行的基于网页的notebook.Zeppelin提供了数据可视化的框架. Zepp ...
- gin里获取http请求过来的参数
https://www.bilibili.com/video/av68769981/?p=2 课程代码: https://www.qfgolang.com/?special=ginkuangjia&a ...
- JS的异步加载
异步加载 先看一张整体的异步加载对渲染的阻塞情况图,图片如下: 从这张图里我们可以看到如下4点: 默认情况HTML解析,然后加载JS,此时HTML解析中断,然后执行JS,最后JS执行完成恢复HTML解 ...
- iOS中atomic修饰符的底层实现
在iOS中,atomic表示一个类的属性getter/setter具有原子性.那么iOS底层是如何保证这种原子性的呢? 我们有一个类A,它有一个属性X具有atomic: @property (atom ...
- C语言:如何让printf输出更加美化(用游戏英雄属性作例子)
#include <stdlib.h> /* run this program using the console pauser or add your own getch, system ...