zoukankan      html  css  js  c++  java
  • ●值类型、引用类型

    堆和栈的区别

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

      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”的地址。

      

  • 相关阅读:
    变量
    词频统计
    Python文件处理
    python面试题
    函数及组合数据类型
    位(bit)、字节(byte)、字符、编码之间的关系
    程序的控制结构
    Python:turtle库的使用及图形绘制
    Dynamics 365 CRM Connected Field Service 不能接收IoT Alert
    Dynamics 365 CRM 部署 Connected Field Service
  • 原文地址:https://www.cnblogs.com/phantom-k/p/3948405.html
Copyright © 2011-2022 走看看