数据类型

因为要期末考试了,我开始认真学C#,然后在c#的学习视频中居然有数据类型的详细说明,开心到打滚.

数据类型的分类

1. 值类型和引用类型

  • 什么是值类型,什么类型属于值类型?
    值类型是存储数据本身。 int float 双精度 boolean char 和枚举
  • 什么是引用类型,什么类型属于引用类型?
    引用类型是存储数据的引用(内存地址)。string Arry 类 对象

看到这里,可能还是很迷糊。在知道cpu和内存,内存的分配之后呢,就会清晰很多。

2.cpu是什么?

百度上有,我就不写了。

3.内存是什么

cpu与其他外部存储器交换数据的桥梁。用于存储正在执行的程序与数据,即数据必须加载到内存中才能被cpu处理。

4. 内存的分配

一整块内存分为栈区和堆区

  • 栈区的特点
    空间小(1mb),读取速度快
  • 栈区的作用
    用于存储正在执行的方法,分配的空间叫做栈帧。栈帧中存储方法的参数以及变量等数据。方法执行完毕之后,对应的栈帧将被删除。(它被删了,没了,别想着它了)
  • 堆区的特点
    空间大,读取速度慢。(相对与栈区)
  • 栈区的作用
    用于存储引用类型的数据。

以c#语法为例

class Program
   {
       static void Main(string[] args)
       {
           int a = 1;//01行
           Test01(a);//02行
           Console.WriteLine(a);//03行
           Console.ReadKey();
       }
       private static void Test01(int a)
       {
           a = 2;
       }
   }

代码执行完毕之后,正确答案是输出1;
以前我还会想 ,是输出1还是2啊。然后视频里老师带着我们画图,我瞬间就理解了。(不许笑我,这么简单的问题还不会。不会就学,现在不是知道了,happy)
当代码运行到02行是,在内存中的分布图如下
方法运行在栈中,所以在在栈区开一块空间,变量的声明也是向内存中开辟一块空间,又因为int是值类型所以a那块地里存的是1,存的是数据


01.png

执行到03行是,发现一个方法所以又开辟一块空间 如图


02.png

开始运行Test01方法里的代码,我们知道Test01(a),传了一个a,a里面是1吧,所以传递数据也是1.代码在往下走,a=2.即a里面的1,被2覆盖.
03.png

代码在往下走,就结束这个方法了.栈中Tes01这块空间就被删了
04.png

然后代码在往下执行,从图中就可以很清晰的知道

最后输出a时,a里面的数据是几了

后面有时间在补全··········

你可能感兴趣的:(数据类型)