值传递和引用传递02

  让我们再来看有关值传递和引用传递的例子:

            //值传递,传递的是这个值的本身
            int n = 10;
            int m = n;
            m = 40;
            Console.WriteLine(n);   // 10
            Console.WriteLine(m);   // 40
            //引用传递,传递的是对象的引用
            //p1 p2 共同指向了同一个堆上的地址
            //通过p2改变age,p1所指向的age也会跟着改变的
            Person p1 = new Person();
            p1.age = 20;
            Person p2 = p1;
            p2.age = 25;
            Console.WriteLine(p1.age);  //  25
            Console.WriteLine(p2.age);  //  25
            //字符串虽然属于引用类型,但由于它的不可变性
            //在改变s2所指向的内存后,s1所指向的内存不会跟着改变
            string s1 = "dssd";
            string s2 = s1;
            s2 = "rere";
            Console.WriteLine(s1); //   dssd
            Console.WriteLine(s2); //   rere
            //在参数前面加上ref修饰,传递的是参数的地址,值传递变成了引用传递
            int number = 10;
            Fun(ref number);
            Console.WriteLine(number);  //  20

        public static void Fun(ref int n)
        {
            n += 10;
        }
时间: 2024-11-16 01:12:23

值传递和引用传递02的相关文章

188W+程序员关注过的问题:Java到底是值传递还是引用传递?

在逛 Stack Overflow 的时候,发现了一些访问量像阿尔卑斯山一样高的问题,比如说这个:Java 到底是值传递还是引用传递?访问量足足有 188万+,这不得了啊!说明有很多很多的程序员被这个问题困扰过.实话实说吧,我就是其中之一. 来回顾一下提问者的问题: 我一直认为 Java 是按引用传递的,但是我看一些博客上说不是的.我就纳闷了,Java 到底是值传递还是引用传递?值传递和引用传递有什么区别呢? 如果你也曾被这个问题困扰过,或者正在被困扰,就请随我一起来梳理一下问题的答案.打怪进阶

值传递,指针传递;引用传递(c++独有)本质

要理解值传递.指针传递和引用传递的区别,主要要理解函数的实参和形参,函数的作用域(自动变量.栈),内存的布局以及指针和引用的特点.这里主要总结三种参数传递方式使用的主要场合. 值传递:只给函数提供输入值,需要复制开销,大对象很少使用值传递. 指针传递:可以改变指针指向内容的值,但是不能改变指针本身,无需复制开销.如果需要改变指针本身,可以使用二重指针或者指针引用. 引用传递:除了提供输入值外,还返回操作结果,无需复制开销. #include<stdlib.h> //值传递,函数体内变量n是参数

Java中的值传递和引用传递

解释 1.Java中有没有引用传递? 答:Java中只有按值传递,没有按引用传递! 2.当一个对象被当作参数传递到一个方法中后,在此方法中可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 答:是值传递. Java参数,不管是原始类型还是引用类型,传递的都是副本(有另外一种说法是传值,但是说传副本更好理解吧,传值通常是相对传址而言).如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的,如果在函数中改变了副本

c# 值类型与引用类型 值传递与引用传递

值类型与引用类型: 值类型 :1.值类型大小固定.存储在栈上.  2.不能继承,只能实现接口 3.派生自valuetype int double char float byte bool enum struct decimal 引用类型:1.在栈上存储了一个地址实际存储在堆中,大小不固定. 2.数组.类.接口.委托 string 数组 类 接口 委托 值传递与引用传递: 值类型按值传递.值类型按引用传递.引用类型按值传递.引用类型按引用传递. 值传递:默认传递都是值传递 ,把栈中内容拷贝一份引用

JavaScript的值传递和引用传递

本文和大家分享的主要是javascript中值传递和引用传递相关内容,一起来看看吧,希望对大家学习javascript有所帮助. JavaScript有5种基本的数据类型,分别是:布尔.null.undefined.String和Number.这些基本类型在赋值的时候是通过值传递的方式.值得注意的是还有另外三种类型: Array.Function和Object,它们通过引用来传递.从底层技术上看,它们三都是对象. 基本数据类型 如果一个基本的数据类型绑定到某个变量,我们可以认为该变量包含这个基本

java中参数传递--值传递,引用传递

java中的参数传递--值传递.引用传递 参数是按值而不是按引用传递的说明 Java 应用程序有且仅有的一种参数传递机制,即按值传递. 在 Java 应用程序中永远不会传递对象,而只传递对象引用.因此是按引用传递对象.Java 应用程序按引用传递对象这一事实并不意味着 Java 应用程序按引用传递参数.参数可以是对象引用,而 Java 应用程序是按值传递对象引用的. Java 应用程序中的变量可以为以下两种类型之一:引用类型或基本类型.当作为参数传递给一个方法时,处理这两种类型的方式是相同的.两

java中值传递和引用传递

本来今天刚学习的内容,然后去其他博客看了下,发现都吵起来了,就是名字原因,有的说java有值传递和引用传递,有的说引用传递本质就是值传递,我管你杂说的,只要自己理解好,代码知道运行结果就好了. 我用自己的话,自己的理解来解释下,反正都是自己写着玩,自己看的 值传递:传递的值,这个值以后怎么改变,源值不会发生改变的. 引用传递:将对象的引用地址传递过去,如果值发生改变,那么源值也发生改变. 代码如下: 值传递: public class Test1 { public static void mai

PHP值传递和引用传递的区别

PHP值传递和引用传递的区别.什么时候传值什么时候传引用 (1)按值传递:函数范围内对值的任何改变在函数外部都会被忽略 (2)按引用传递:函数范围内对值的任何改变在函数外部也能反映出这些修改 (3)优缺点: A:按值传递时,php必须复制值.特别是对于大型的字符串和对象来说,这将会是一个代价很大的操作. B.按引用传递则不需要复制值,对于性能提高很有好处. 1 <?php 2 header('content-type:text/html;charset=utf-8'); 3 4 //探讨一下 a

对几种传递的理解:值传递,地址传递,引用传递

对几种传递的理解:值传递,地址传递,引用传递 因为会用到形参和实参的概念,区别一下,形参 即在定义函数时 int add(int a , int b)中a,b,即为形参.而当调用时int(3,4)中3,4即为实参. ①值传递 #include<stdio.h> void Exchg1(int x, int y){ int tmp; tmp=x; x=y; y=tmp; printf("x= %d , y= %d\n",x,y);}int main(){ int a=4,b=