• ●值类型、引用类型


    堆和栈的区别

      计算机分配内存的时候会分出堆和栈两个区域

      1、堆:一般由程序员分配释放,存放字符串、数组等。

      2、栈:用来存放函数的参数值、局部变量的值等。

      为方便了理解,可以把堆想象成仓库,而栈可以想象成仓库的记录、索引。

    值类型和引用类型

      值类型有整型、字符型、布尔型、浮点型、自定义结构体等。值类型是存放在内存的栈区。

      引用类型有数组、字符串等。引用类型存放在内存的堆区。

     1         static void Hello(string a)
     2         {
     3             a = "你好";
     4             Console.WriteLine("2、"+a);
     5         }
     6 
     7         static void Main(string[] args)
     8         {
     9             string n = "hello";
    10             Console.WriteLine("1、"+n);
    11             Hello(n);
    12             Console.WriteLine("3、"+n);
    13 
    14         }

      我们都知道字符串是引用类型,传址方式,分析上面代码,对于初学者,也许会以为输出结果是:1、hello;2、你好;3、你好。但实际是:

    为什么实际显示不一样呢?

      分析:字符串是存放在内存的堆区,字符串实际上是字符数组,数组的长度是不能改变的,所以,当为字符串变量重新赋值的时候,是计算机在堆区新建了字符串,并把地址赋给变量。第10行中,当定义n=“hello”时,在堆区创建了字符串“hello”,在栈区创建了变量n,n中存的是堆区“hello”的地址。当程序运行到第3行的时候,实际上是计算机重新在堆区创建了“你好”,并把地址给栈区的形参a;在此过程中,栈区n中存放的还是“hello”的地址。

      

  • 相关阅读:
    HQueue_Install_In_Ubuntu
    win10_64_ssh连接linux
    win10防火墙服务灰色解决办法
    打开houdini软件的脚本
    houdini_license_sever start and off
    Java关于Object类中equal方法的理解
    Java关于Object类中equal方法的理解
    单源最短路径
    单源最短路径
    最小生成树
  • 原文地址:https://www.cnblogs.com/phantom-k/p/3948405.html
Copyright © 2020-2023  润新知