1.变量和内存地址

每个变量都有内存地址,可以说通过变量操作对应大小的内存,
普通变量存储的是对应类型的值,这些类型叫做值类型
指针类型的变量存储的是一个值的内存地址,所以叫做指针类型或者引用类型

可以通过 & 符号获取变量内存地址

a := 100
fmt.Println(&a)

 

2.使用指针

指针声明格式如下

var name *type
var a *int //此时是一个空指针,存储的是空地址

我们可以把一个变量的内存地址存储在指针变量(当引用类型的值发生修改,其引用的值类型的值也会发生修改)

var a int= 20   /* 声明实际变量 */
var ip *int        /* 声明指针变量 */
ip = &a  /* 指针变量的存储地址 */

fmt.Printf("a 变量的地址是: %x\n", &a  ) //20818a220

/* 指针变量的存储地址 */
fmt.Printf("ip 变量储存的指针地址: %x\n", ip ) //20818a220

/* 使用指针访问值,*号获取执行地址里面的变量 */
fmt.Printf("*ip 变量的值: %d\n", *ip ) //20