basis 值类型与引用类型

值类型

​ 值类型一般都存储在栈区内存中(也可以存储在堆区),一般来说,值类型在进行参数传递时会重新创建一份新得拷贝,这意味着修改新的拷贝时,旧值不会受到影响。

引用类型

​ 引用类型只能存储在堆区中,并且在大多数语言的参数传递时都不会进行新的拷贝,而是将原本的内存地址再次进行指向。

​ 故引用类型在参数传递时一定要注意对本体的影响。

其他区别

​ 引用类型相比于传递速率上来说,会比值类型更加高效,因为不用一次拷贝过多的数据。

​ 引用类型之所以可以引用,是因为我们创建引用类型的变量,其实是一个标头值,标头值里包含一个指针,指向底层的数据结构,当我们在函数中传递引用类型时,其实传递的是这个标头值的副本,它所指向的底层结构并没有被复制传递,这也是引用类型传递高效的原因。

​ 本质上,我们可以理解函数的传递都是值传递,只不过引用类型传递的是一个指向底层数据的指针,所以我们在操作的时候,可以修改共享的底层数据的值,进而影响到所有引用到这个共享底层数据的变量。

posted @ 2020-10-18 22:12  云崖君  阅读(90)  评论(0)    收藏  举报