指针类型
获取变量的地址: &i
&符号加变量名
var ptr *int=&num
&num,获取变量num的地址
ptr是一个指针类型的数据,获取该指针指向的值用*ptr
指针理解图:
使用地址修改数据的值:
值类型都有对应的指针类型
值类型包括,int系列,float系列,bool,string,数组,结构体struct
引用类型:指针,slice切片,map,管道chan,接口interface等都是引用类型
值类型和引用类型的使用特点:
值类型:变量直接存储值,内存通常在栈中分配
引用类型:变量存储的是一个地址,这个地址对应的空间才真正储存数据(值),内存通常在堆上分配(有可能会逃逸分析),当没有任何变量引用这个地址时,该地址对应的数据空间就成为一个垃圾,由GC来回收
栈和堆
栈存放:
堆存放: