• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 引用参数和传值参数的区别深入解析

引用参数和传值参数的区别深入解析

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了引用类型参数的传值,java参数传值,传值参数,传值和传引用的区别,java传值和传引用等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

1. 我们都知道,普通的传值参数是由行参传给实参;

编译器在函数内部为每一个参数产生一个临时变量,将每一个参数压入栈(stack)中,将实参的数值保存到临时变量中。

所以才有在低端8位机中,对参数的数量有比较严格的限制,因为栈的深度非常有限;当然,在通用机上也有同样的问题,参数过多不合适,但通用机的栈的深度比低端机大多了;

2. 引用做参数传递的是变量的地址;

实质上传递的是变量的指针;

引用作为参数的好处是减少了临时变量对内存的开销,因此常用于对大对象的操作;

而常引用做参数就是保护参数不被修改;

附:堆和栈的知识
一个由c/C++编译的程序占用的内存分为以下几个部分

1、栈区(stack)―   由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。

2、堆区(heap) ―   一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。

3、全局区(静态区)(static)―,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放

4、文字常量区  ―常量字符串就是放在这里的。 程序结束后由系统释放

5、程序代码区―存放函数体的二进制代码。

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 引用参数和传值参数的区别深入解析

相关文章

  • 2017-05-28C++位操作的常见用法小结
  • 2017-05-28C++实现自顶向下的归并排序算法
  • 2017-05-28详解数据结构C语言实现之循环队列
  • 2017-05-28c语言++放在前面和后面的区别分析
  • 2017-05-28C语言实现大数据文件的内存映射机制
  • 2017-05-28C++深度优先搜索的实现方法
  • 2017-05-28C语言关键字auto与register的深入理解
  • 2017-05-28C++跳转语句之Goto对变量定义的影响详解
  • 2017-05-28最大子矩阵问题实例解析
  • 2017-05-28C语言循环结构与时间函数用法实例教程

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言 位段的详细介绍
    • 变量定义与声明的区别详细解析
    • 生成随机数rand函数的用法详解
    • C++线程同步实例分析
    • 深入理解c++中char*与wchar_t*与string以及wstring之间的相互转换
    • 详解state状态模式及在C++设计模式编程中的使用实例
    • C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
    • C/C++中static,const,inline三种关键字详细总结
    • C语言压缩文件和用MD5算法校验文件完整性的实例教程
    • c++如何分割字符串示例代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有