开发者社区> 问答> 正文

[@倚贤][¥20]什么是值传递和引用传递?

什么是值传递和引用传递?

展开
收起
黑琴白键 2018-10-30 00:04:30 140214 0
36 条回答
写回答
取消 提交回答
  • 推荐回答

    值传递:把A的值拷贝给B,B修改后不影响A的数据 引用传递:传递值所在的地址AB共用一个数据,数据修改后,AB都会受到影响

    2019-08-29 17:07:27
    赞同 1 展开评论 打赏
  • 值传递,是对于基本数据类型的变量而言的。传递的是该变量的一个副本,改变副本并不影响原变量

    引用传递,是对于对象型变量而言的。传递的是该变量地址的一个副本,并不是该对象本身

    2020-03-30 10:16:36
    赞同 展开评论 打赏
  • 值传递传递的是值,引用传递是传递引用,如果引用的值被改变,读到的是最新的值。

    2020-03-18 16:55:48
    赞同 展开评论 打赏
  • 值传递是传递影分身,复制自己一份传过去;引用传递时把对自己的地址直接传过去,在这个地址上做修改会直接影响到传值者

    2020-03-17 10:55:06
    赞同 展开评论 打赏
  • 在C#中,有值类型和引用类型之分(用struct定义的类型或原生类型是值类型,用class定义的是引用类型)。 在方法中直接创建值类型的值时,这个值的整个内存块存在于栈中;而创建引用类型的值时,这个类似于指针的引用会存在栈中,而这个对象的数据会存在于堆中新分配的一块内存。 调用一个函数传参,或者发生赋值操作时,值类型的值会直接拷贝栈内存中的这个值的全部数据到新的值上;引用类型则只需要拷贝引用到新的引用上。 总而言之,传递时都会对栈中的数据进行拷贝,只是值传递拷贝的是数据本身的内存,引用传递拷贝的是指向数据的引用。

    2020-02-11 20:11:57
    赞同 展开评论 打赏
  • 一只小运维

    值传递在方法的调用过程中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。 引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象。

    2019-10-16 15:02:13
    赞同 1 展开评论 打赏
  • 基础数据类型修改后不会影响原来的值-值传递 对象数据类型修改后会影响原来的值-引用传递

    2019-08-29 09:34:26
    赞同 展开评论 打赏
  • 传递后原来值不变的就是值传递,原来值改变了就叫引用传递

    2019-08-24 22:39:19
    赞同 展开评论 打赏
  • 值传递:(形式参数类型是基本数据类型):方法调用时,实际参数把它的值传递给对应的形式参数,形式参数只是用实际参数的值初始化自己的存储单元内容,是两个不同的存储单元,所以方法执行中形式参数值的改变不影响实际参数的值。

    引用传递:(形式参数类型是引用数据类型参数):也称为传地址。方法调用时,实际参数是对象(或数组),这时实际参数与形式参数指向同一个地址,在方法执行中,对形式参数的操作实际上就是对实际参数的操作,这个结果在方法结束后被保留了下来,所以方法执行中形式参数的改变将会影响实际参数。

    e43f4bbb814b45bcba5c65d0dccd59da_603ab829395f4c85a66900d566d53cec.jpg

    2019-07-17 23:11:06
    赞同 1 展开评论 打赏
  • 通俗一点讲,传值就是数据的复制传递,不能改变原始的数据,引用就是拿到原始数据数据传递。能够改变原始的数据。

    2019-07-17 23:11:06
    赞同 展开评论 打赏
  • 见贤思齐焉,见不贤而内自省也。

    基础数据类型-值传递
    对象数据类型-引用传递

    2019-07-17 23:11:06
    赞同 展开评论 打赏
  • 沉迷学习无法自拔

    值传递修改后不会影响原来的值
    引用传递修改后会影响原来的值

    2019-07-17 23:11:05
    赞同 展开评论 打赏
  • 精选分享测评站】精选分享测评站】www.boobuo.com

    2019-07-17 23:11:05
    赞同 展开评论 打赏
  • 热爱技术,专研一生...

    值传递:一般都是基本类型传参,int long short ...
    引用传递:通过对象封装传参, Object Integer Long Short 等

    2019-07-17 23:11:05
    赞同 展开评论 打赏
  • windows and linux kernel development

    值传递:通过复制传递
    引用传递:实际就是通过指针常量实现的

    2019-07-17 23:11:05
    赞同 展开评论 打赏
  • 哈哈哈

    传值:和copy是一样的。【打个比方,我有一橦房子,我给你建筑材料,你建了一个根我的房子一模一样的房子,你在你的房子做什么事都不会影响到我,我在我的房子里做什么事也不会影响到你,彼此独立。】
    传引用:类似于C语言的指针了,感觉差不多。打个比方,我有一橦房子,我给你一把钥匙,我们二个都可以进入这个房子,你在房子做什么都会影响到我。

    【优缺点:】传值会很耗时间,特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作,传送引用,函数内的任何操作等同于对传送变量的操作,传送大型变量时效率高!

    2019-07-17 23:11:05
    赞同 1 展开评论 打赏
  • 值传递就是把数值传过去,引用传递,实际是传递保存值的地址

    2019-07-17 23:11:05
    赞同 展开评论 打赏
  • 不错不错

    C/C++中区分值传递和指针传递。JAVA中只有值传递,没有引用传递一说,对对象本身看成一种值(地址值)也归为值传递。

    2019-07-17 23:11:05
    赞同 展开评论 打赏
  • 1、值传递

        在方法的调用过程中,实参把它的实际值传递给形参,此传递过程就是将实参的值复制一份传递到函数中,这样如果在函数中对该值(形参的值)进行了操作将不会影响实参的值。因为是直接复制,所以这种方式在传递大量数据时,运行效率会特别低下。

    2、引用传递

        引用传递弥补了值传递的不足,如果传递的数据量很大,直接复过去的话,会占用大量的内存空间,而引用传递就是将对象的地址值传递过去,函数接收的是原始值的首地址值。在方法的执行过程中,形参和实参的内容相同,指向同一块内存地址,也就是说操作的其实都是源数据,所以方法的执行将会影响到实际对象。

    板报教育网https://m.banbaoedu.com/

    2019-07-17 23:11:05
    赞同 1 展开评论 打赏
  • 我是这样理解的,值传递就是你需要数据的时候给你复印一份,你所有的修改操作都是在复印件上进行的,而主程序则用的是原件。引用传递则是把原件给你了,所有的修改都会影响以后主程序对原数据的使用。

    2019-07-17 23:11:04
    赞同 展开评论 打赏
  • 按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。

    1、对象是按引用传递的
    2、Java 应用程序有且仅有的一种参数传递机制,即按值传递
    3、按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本
    4、按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本

    2019-07-17 23:11:04
    赞同 展开评论 打赏
滑动查看更多
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载