分两种
1、值传递
值类型:基本数据类型
int
系列,float
系列,bool
,string
,数组
和结构体struct
2、引用传递
引用类型:
指针
、slice
切片、map
、管道chan
、interface
等都是引用类型
其实,不和是
值传递
还是引用传递
,传递给函数的都是变量的副本
,不同的是值传递的是值的拷贝
,引用传递的是地址的拷贝
,地址拷贝效率高
,因为数据量小,而值拷贝
决定于数据量的大小,数据越大,效率越低
。
值类型和引用类型的使用特点
-
值类型:变量直接存储值,内存通常在
image.png栈
中分配示
-
引用类型:变量存储的是一个地址,这个地址对应的空间才真正存储数据(值),内存通常在
image.png堆
上分配,当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,由GC
来回收
-
内存的
m堆
和栈
的示意图
-
如果希望函数内的变量参修改函数外的变量,可以传入
变量的地址&
,函数内以指数针的方式操作变量
网友评论