美文网首页
值类型 vs 引用类型

值类型 vs 引用类型

作者: coder_那一抹刚吹过的风 | 来源:发表于2019-05-17 00:43 被阅读0次

相信很多人面试的时候都被问到过,大家那心里都很清楚他们的区别。但是当我们想以一种比较官方话讲出来时觉得一时,不知道从何说起。所以今天刚辞职的我想简单谈谈我的看法。
在作者查阅了大量资料后,我并没有在计算机基础中查找到关于这两种说法的定义(有找的兄弟可以告诉我,我去补补缺),我比较的接受的资料是以C#语言为例的说法。下面进入正文:

In C#, these data types are categorized based on how they store their value in the memory. C# includes following categories of data types:
1.Value type
2.Reference type
3.Pointer type

从上面的资料中我们可以很得出一个重要结论:

值类型和引用类型的划分是依据是:在内存中的存储方式不同.

咱们分别来看这两种类型的存储究竟有何不同
1.值类型
当我们声明一个数据类型并且在他内存中有值,也就是说这个值直接包括在他声明的内存中。举个简单的🌰:

int i = 0

它在计算机中的存储方式如下:


值类型

从上图中我们可以很清楚的看出,整数100就存储在i指向的内存(0x239110)中。
2.引用类型
对比值类型说,引用类型并不是直接数据类型的值,而是保存其值所在的内存地址
同样来个🌰:

string s = "Hello World!!";
引用类型

这个图我就不做说明,大家对比值类型保存的图,应该很明显可以看出两者的区别。
为了方便大家理解。给大家举个生活中常见的类似场景:
想象一下我们带着包(变量)去超市,到了超市我们有两种方式处理这个包:
1.放在身上(直接存储到内存中,用时直接取)
2.存在储物柜,自己拿着凭条(保存变量地址,按照地址取变量)
以上是以C#语言为例关于两种类型的说明,还要有一点关于自己的理解。希望能帮到需要的同志。
写在最后:
关于内存操作没有简单的事,值类型和引用类型放开了讲会是一件极其复杂的事情,牵涉到的东西太多。比如:两种类型的存储区域在哪?引用类型的值是怎么查找?... 在下知识浅薄,见识短浅,实在不敢妄谈。大家有高见或者有更深刻理解的欢迎留言。

Value Type and Reference Type

相关文章

  • value type vs reference type in

    swift 中 值类型 vs 引用类型 整理如下: 类型存储备注比喻Value Type 值类型Get Store...

  • 值类型 VS 引用类型

    如果把系统比做是个银行,那么值类型相当于现金,要用直接用;引用类型是存折,要用时得先去银行取现。 值类型和引用类型...

  • 值类型 vs 引用类型

    相信很多人面试的时候都被问到过,大家那心里都很清楚他们的区别。但是当我们想以一种比较官方话讲出来时觉得一时,不知道...

  • 慕课网-前端JavaScript面试技巧笔记

    js中使用 typeof 能得到哪些类型? 考察点:JS变量类型值类型VS引用类型,引用类型可以无限制扩展属性 何...

  • struct 和 class

    值类型 VS 引用类型 值类型和引用类型的核心不同就是数据和数据的存储位置。我们用局部变量、参数、属性和全局变量来...

  • 10月18日C#学习总结

    今天老师讲了值类型 vs.引用类型、数据的引用类型、数据的值类型、装箱和拆箱、运算符与表达式和方法重载。 C#中所...

  • 一.C#中值类型与引用类型

    总结:值类型直接存储其值,引用类型存储对值的引用,值类型存在堆栈上,引用类型存储在托管堆上,值类型转为引用类型叫做...

  • 慕课网《前端JavaScript基础面试技巧》学习笔记

    变量类型 值类型和引用类型 值类型只能存储一个值 值类型复制就是值类型本身 引用类型复制只是复制引用类型的指针 引...

  • Structs vs classes(值类型vs引用类型)

    我们知道classes是引用类型,structs属于值类型。这就意味着,当你传递一个class,Swift传递的是...

  • 面试

    值类型和引用类型 值类型和引用类型的区别是值类型直接存储其值,而引用类型存储对值的引用。这两种类型存储在内存的不同...

网友评论

      本文标题:值类型 vs 引用类型

      本文链接:https://www.haomeiwen.com/subject/dysgaqtx.html