传入值参数&传入引用参数的区别

传值&传引用

1.传值

  • 是把实参的值赋值给行参
  • 那么对行参的修改,不会影响实参的值

2.传地址

  • 是传值的一种特殊方式,只是他传递的是地址
  • 那么传地址以后,实参和行参都指向同一个对象

3.传引用

  • 真正的以地址的方式传递参数 ,传递以后,行参和实参都是同一个对象,只是他们名字不同而已
  • 对行参的修改将影响实参的值

函数调用的角度来分析

1.传值

  • 函数参数压栈的是参数的副本。
  • 任何的修改是在副本上作用,没有作用在原来的变量上。

2.传指针:

  • 压栈的是指针变量的副本。
  • 当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。

3.传引用:

  • 压栈的是引用的副本。
  • 由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作。(作用和传指针一样)

函数参数传递机制的基本理论

    函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。
  • 值传递(pass-by-value)

     被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。   
    
  • 引用传递(pass-by-reference)

     被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。
    

转载链接:IT菜鸟,请多指教

posted @   dengshuo7412  阅读(2010)  评论(0编辑  收藏  举报
编辑推荐:
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
阅读排行:
· 互联网不景气了那就玩玩嵌入式吧,用纯.NET开发并制作一个智能桌面机器人(四):结合BotSharp
· 一个基于 .NET 开源免费的异地组网和内网穿透工具
· 《HelloGitHub》第 108 期
· Windows桌面应用自动更新解决方案SharpUpdater5发布
· 我的家庭实验室服务器集群硬件清单
点击右上角即可分享
微信分享提示