C++中引用与取地址
2024-10-19 11:50:46
所谓引用就是为对象起一个别名。例如变量b = &a,b就是a的一个引用。对b的任何操作等同于对a的操作,也就是说,如果你改变了b的值,同时a的值也会发生改变。b就是a的另外一个名字,他们实质是同一个变量。就好比是同一个人,只不过穿着不同的衣服而已。至于引用的用处,给你举一个简单的例子,比如一个交换两个值的函数swap(int a, int b),如果将两个值带进去,发生交换的只是形参a和b,因为函数结束的时候这两个参数的生命周期结束了,换句话说,实参a和b的值并未发生交换。而如果swap(int &a,int &b)则不同,他的参数是a和b的引用,也就是说函数中的a和b就是你带入的实参,当函数中的a和b发生变化时,被引用的值在同时也发生了变化,而不会受到函数声明周期的影响。取地址则顾名思义,就是取得对象的地址,通过指针来操作对象,也可以达到引用的效果,它不是直接对对象进行操作,而是根据对象的地址。与引用不同的是,引用是不占用存储空间的,而如果用指针指向对象地址的时候会有自己的存储空间。举个简单的例子,swap(int *a, int *b), *a和*b是指向实参的指针,即他们有实参的地址,而我们知道a和b的地址是没有改变的,那么根据他们的地址就可以操作他们的值,也就不用考虑函数生命周期了。举的例子比较简单,实际中的应用比这个复杂的多。只要能理解就好。
最新文章
- iis虚拟目录名称“ReportServer”的巧合
- IOS主要框架介绍(转)
- ENode 1.0 - 消息队列的设计思路
- MySql 中 case when then else end 的用法
- windows 远程桌面研究
- oracle中删除表中某字段出现重复的信息 保留其中一条
- linux的cgroup控制
- java用代理访问
- Visual Studio C++ Command Line
- 【转】CHAR CHARACTER VARCHAR NCHAR NVARCHAR NVARCHAR2区别
- moveToThread的最简单用法(依葫芦画瓢即可)(使得线程也更偏向于信号槽的使用方法)
- SSLv3协议、TLSv1.2协议配置不对导致javax.ws.rs.ProcessingException: java.net.SocketException: Connection reset
- 数据库 SQL Server2012安装步骤详解
- mybatis_SQL缓存(5)
- 最优装载—dp
- 【Java并发.6】结构化并发应用程序
- anaconda安装win10
- 牛客练习赛13F m皇后
- 6.3Pytyhon文件的操作(三)
- linux配置无秘钥登陆
热门文章
- Tomcat------如何更改被IIS占用的80端口
- 使用npm国内镜像
- MyBatis入门程序之整合Spring
- windows恶意软件删除工具(MRT.exe)检查计算机是否感染病毒使用图解
- Unity弹出MessageBox
- BugHD 与你的应用一起成长
- [C] include <;filename>; 和 include ";filename"; 的区别
- jQuery ajax中serialize()方法增加其他参数
- 用MyEclipse将Maven Dependencies中的jar包导出
- 《转载》Fiddler 抓包工具总结