此处没有代码,仅仅讨论一些这样的问题:我们为何使用引用?在哪里使用引用?

首先从函数的角度思考?:函数进行一般参数传递的时候,是怎么样传递的?普通类型的参数传递,是将传递的实参复制一份,到另一个内存空间,这其中包含了int,char ,甚至struct。那么从内存的角度讲:如果我们传递的参数非常占用内存空间,比如一个很大很复杂的结构体。那么复制过程首先无疑会浪费时间,其次也会浪费内存.更不用讨论c++中在参数类型为类的时候,同样是一种复杂的结构类型。而引用这种方式,相当给原变量取了一个别名,但实际上指向的仍然是原来的变量,从物理上讲,他们指向的是同一个物理地址。

其次,我们之前在程序设计中很少关注过函数的返回值。似乎也很少使用函数的返回值。但其实,函数的返回值和形参具有同样的属性:即进行函数值返回时,将当前变量进行了复制。同样的当这个变量的结构类型比较复杂的时候,同样会产生内存的浪费和效率的降低。这也是为什么引入:指针和引用作为返回类型的考量.

后续补充:::::::::::::::::::::::::::::::::

c++入门之再话内存和引用的更多相关文章

  1. c++入门之 再话类

    对于类,其结构并不难,但要理解其设计思想也并不容易,在此,我们可以通过下面的代码进一步理解和使用类: # ifndef VECTOR_H_ # define VECTOR_H_ # include & ...

  2. c++入门之再话命名空间的意义

    c++中使用了命名空间这一概念,通过下面这个代码,我们将深刻认识到命名空间的重要作用和意义: # include"iostream" using namespace std; na ...

  3. 不能返回函数内部new分配的内存的引用

    以前在开发电子秤接口动态库时,曾尝试在用于获取重量的函数外面定义一个字符串指针,然后作为参数传入函数内部,然后在函数内部new,用来输出函数执行过程中发生的错误.但是总是出错,没有找到原因,后来无意中 ...

  4. PE文件从文件加载到内存,再从内存读取,然后存盘到文件

    // mem.cpp : 定义控制台应用程序的入口点. //PE文件从文件加载到内存,再从内存读取,然后存盘到文件 #include "stdafx.h" #include < ...

  5. 当客户端提交更新数据请求时,是先写入edits,然后再写入内存的

    http://blog.sina.com.cn/s/blog_6f83c7470101b7d3.html http://blog.csdn.net/slq1023/article/details/49 ...

  6. LWIP再探----内存堆管理

    LWIP的内存管理主要三种:内存池Pool,内存堆,和C库方式.三种方式中C库因为是直接从系统堆中分配内存空间且易产生碎片因此,基本不会使用,其他两种是LWIP默认全部采用的方式,也是综合效率和空间的 ...

  7. Java虚拟机15:再谈四种引用状态

    JVM的四种引用状态 在Java虚拟机5:Java垃圾回收(GC)机制详解一文中,有简单提到过JVM的四种引用状态,当时只是简单学习,知道有这么一个概念,对四种引用状态理解不深.这两天重看虚拟机这部分 ...

  8. Java虚拟机19:再谈四种引用状态

    JVM的四种引用状态 在Java虚拟机5:Java垃圾回收(GC)机制详解一文中,有简单提到过JVM的四种引用状态,当时只是简单学习,知道有这么一个概念,对四种引用状态理解不深.这两天重看虚拟机这部分 ...

  9. 再谈内存管理与ARC运行机制(一)

    内存管理 内存在Objective-C开发中是一种相对稀缺的资源,拿Iphone4为例,它的内存只有512mb,所以妥善的处理好所创造,所使用的每个对象与变量都将成为一个问题.在ARC出现以前,同大部 ...

随机推荐

  1. Failed to decrypt protected XML node "DTS:Password" with error 0x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when t

    Question SSIS包从A服务器搬迁到B服务器,运行报错 Description: Failed to decrypt protected XML node "DTS:Password ...

  2. Windows Server 2016-配置Windows Defender防病毒排除项

    Windows Server 2016 的计算机上的 Windows Defender 防病毒自动注册你在某些排除项,由你指定的服务器角色定义. 这些排除项不会显示在Windows 安全中心应用中所示 ...

  3. 【Linux基础】crontab定时命令详解

    周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron].cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.cron的配置文件称为“crontab”,是 ...

  4. python的各种推导式

    python的各种推导式(列表推导式.字典推导式.集合推导式) 推导式comprehensions(又称解析式),是Python的一种独有特性.推导式是可以从一个数据序列构建另一个新的数据序列的结构体 ...

  5. NUMA特性禁用

    一.检查OS是否开启NUMA # numactl --hardware 二.Linux OS层面禁用NUMA 1.修改 grub.conf # vi /boot/grub/grub.conf #/* ...

  6. Python:Day51 web框架

    from wsgiref.simple_server import make_server def application(environ, start_response): start_respon ...

  7. utc时间转成local时间

    public static Date utcToLocal(String utcTime){ SimpleDateFormat sdf = new SimpleDateFormat("yyy ...

  8. RS-485总线通信协议

    https://blog.csdn.net/ouyangxin95/article/details/78174145 RS-485总线技术只是规定了接口的电气标准,并没有规定RS-485接口的电缆,插 ...

  9. 05 python 初学(列表)

    列表,有点像c++里的数组 # _author: lily # _date: 2018/12/16 mylist = ["xiaohong", "xiaogang&quo ...

  10. node.js如何引用其它js文件

    以Java来说,比如要实现第三方存储,我可能需要导入对应的库,以maven为例,使用腾讯云或者七牛云.阿里云,我需要导入对应的maven依赖.再比如,有些时候我们封装某个类,而那个类不在该包下,我们需 ...